set全部繼承sollection
set集合特點:
不包含重複元素的集合
沒有帶索引的方法,所以不能使用普通for迴圈便利
set是乙個介面,不能直接被例項化,hashset可把set例項化
hashset對集合的迭代順序不做任何保證
雜湊值:
是jdk根據物件的位址或者字串或者陣列算出來的int型別的數值
object類中有乙個方法可以獲取物件的雜湊值
public int hashcode():返回物件的雜湊碼值
同乙個物件呼叫hashcode值是一樣的
預設情況下,不同的物件呼叫hashcode值不是一樣的,但是通過方法重寫,可以實現不同物件的雜湊值是相同的
hashset集合概述和特點
是set介面的實現類
底層資料結構是雜湊表
對集合的迭代順序不作任何保證,就是說不能保證儲存和取出的元素順序一致
沒有索引的方法,所以不能使用普通的for迴圈
由於是set集合,所以是不包含重複元素的集合
hashset保持元素唯一性的原始碼分析
雜湊表:
是乙個陣列
范型的本質是引數化型別,也就是說將型別由原力啊的具體的型別引數化,然後再使用/呼叫時傳入具體的型別
這種引數可以用在類、方法、和介面中,分別被稱為范型類、范型方法、范型介面
定義格式:
《型別》:指的一種型別的根底。這裡可以看成是形參
《型別1,型別2…>:指定多種型別的格式,多種型別之間用逗號隔開。這裡的型別可以看成是形參
將來具體呼叫時侯給定的型別可以看成是實參,並且實參的型別只能是引用資料型別
范型的好處:
把執行期間的問題提前到了變異期間
避免了強制型別轉換
范型類:
public class generic
public void sett(t t) }
呼叫:generic g1=new generic();
g1.sett(「liulianlian」);
system.out.println(g1.gett());
generic g2=new generic();
g2.sett(18);
system.out.println(g2.gett());
范型方法:
例如:public void show(t t){}
public class generic
}呼叫:
genergic g=new generic();
g.show(「liulianlian」);
g.show(10);
范型介面:
例如:public inte***ce generic{}
型別萬用字元:>
list>:表示元素型別未知的list,他的元素可以匹配任何的型別
這種帶萬用字元的list僅僅表示它是各種范型list的父類,並不能把元素新增到其中。
如果我們不希望list>是任何范型list的父類,可以使用型別萬用字元的上限。
型別萬用字元的上限:<?extends型別 》
list<?extends number>:他表示的型別是number或者其子型別
除了可以指定型別萬用字元的上限,我們也可以指定萬用字元的下限
型別萬用字元下限: super型別》
list super number>:他表示的型別是number或者其父型別
可變引數:
public static int sun(int …a)
可變引數的使用:
arrays工具類中有乙個靜態方法:
public static listaslist(t…a):返回由指定陣列支援的固定大小的列表
返回的集合不能進行增刪操作,可以做修改操作
list介面中有乙個靜態方法:
public static listof(e…elements):返回包含任意數量元素的不可變列表
返回的集合不能做增刪改操作
list介面中有乙個靜態方法:
public static setof(e…elements):返回乙個包含任意數量元素的不可變集合
在給元素的時候,不能給重複的元素
返回的集合不能做增刪操作,沒有修改的方法
第16周 范型程式補充之set用法
include include include includeusing namespace std int main seteg1 插入 eg1.insert 1 eg1.insert 100 eg1.insert 5 eg1.insert 1 元素1因為已經存在所以set中不會再次插入1 eg1...
STL泛型程式設計 set集合容器
set集合容器實現了紅黑樹 red blacktree 的平衡二叉檢索樹的資料結構,在插入元素時,它會自動調整二叉樹,把該元素放到適當的位置,以確保每個子樹根節點的鍵值大於左子樹所有節點的鍵值,而小於右子樹所有節點的鍵值 另外,確保左右子樹的高度相等,這樣,二叉樹的高度最小,從而檢索速度最快。不會重...
Set集合 排序 泛型 可變參
set集合的基本使用 public class setdemo 獲取雜湊值的 public class student public student string name,int age public string getname public void setname string name p...