色欲av一区久久精品_久久综合色综合色88_无码在线观看不卡_色黄视频网站_亚洲国产精品久久久久秋霞66

?Java中Set與Set到底區(qū)別在哪?

時(shí)間:2023-05-17

您可能知道,無(wú)界通配符Set能夠包容任何類(lèi)型的元素,而原始類(lèi)型Set也能夠包容任何類(lèi)型的元素。那它們之間有什么區(qū)別呢?
1.關(guān)于Set的兩個(gè)現(xiàn)實(shí)
關(guān)于Set有兩個(gè)現(xiàn)實(shí):
Item1:?代表任何類(lèi)型。Set能夠包容任何類(lèi)型的元素。_
Item2:因?yàn)樵蹅儾恢溃康念?lèi)型,所以不能將任何元素放入Set。
因而Set能夠包容任何類(lèi)型的element(Item1),但咱們不能將任何元素放入其中(Item2)。這兩個(gè)陳說(shuō)是否彼此抵觸?當(dāng)然不是。以下兩個(gè)示例能夠清楚地闡明這一點(diǎn):java手寫(xiě)多級(jí)緩存
**Item1表明以下?tīng)顩r:**
//合法代碼publicstaticvoidmain(String[]args){
HashSets1=newHashSet(Arrays.asList(1,2,3));
printSet(s1);
HashSet<String>s2=newHashSet<String>(Arrays.asList(“a”,”b”,”c”));
printSet(s2);
}
publicstaticvoidprintSet(Sets){for(Objecto:s){
System.out.println(o);
}
}
由于Set能夠包容任何類(lèi)型的元素,因而咱們僅在循環(huán)中運(yùn)用Object。
**Item3是指以下不合法狀況:**
//不合法代碼publicstaticvoidprintSet(Sets){
s.add(10);//thislineisillegalfor(Objecto:s){
System.out.println(o);
}
}
因?yàn)樵蹅儾煌耆赖念?lèi)型,所以除了null之外,咱們無(wú)法添加其他任何內(nèi)容。出于相同的原因,咱們無(wú)法運(yùn)用Set初始化調(diào)集。以下是不合法的:
//不合法代碼
Set>set=newHashSet>();
2.Set與Set
原始類(lèi)型集和無(wú)界通配符集有什么區(qū)別?
此方法聲明很好:
publicstaticvoidprintSet(Sets){
s.add(“2”);for(Objecto:s){
System.out.println(o);
}
}
因?yàn)樵碱?lèi)型沒(méi)有約束。但是,這很容易損壞調(diào)集的不變性。
簡(jiǎn)而言之,通配符類(lèi)型是安全的,而原始類(lèi)型則不是。咱們不能將任何元素放入Set中。
3.Set什么時(shí)候有用?
假如要運(yùn)用泛型類(lèi)型,但不知道或不在乎該參數(shù)的實(shí)踐類(lèi)型,則能夠運(yùn)用。它只能運(yùn)用方法的參數(shù)。
例如:
publicstaticvoidmain(String[]args){
HashSets1=newHashSet(Arrays.asList(1,2,3));
HashSets2=newHashSet(Arrays.asList(4,2,3));
System.out.println(getUnion(s1,s2));
}publicstaticintgetUnion(Sets1,Sets2){intcount=s1.size();for(Objecto:s2){if(!s1.contains(o)){
count++;
}
}returncount;
}

文章標(biāo)簽:

Copyright ? 2016 廣州思洋文化傳播有限公司,保留所有權(quán)利。 粵ICP備09033321號(hào)

與項(xiàng)目經(jīng)理交流
掃描二維碼
與項(xiàng)目經(jīng)理交流
掃描二維碼
與項(xiàng)目經(jīng)理交流
ciya68