您可能知道,無(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):
**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;
}
廣州天河區(qū)珠江新城富力盈力大廈北塔2706
020-38013166(網(wǎng)站咨詢(xún)專(zhuān)線(xiàn))
400-001-5281 (售后服務(wù)熱線(xiàn))
深圳市坂田十二橡樹(shù)莊園F1-7棟
Site/ http://www.szciya.com
E-mail/ itciya@vip.163.com
品牌服務(wù)專(zhuān)線(xiàn):400-001-5281
長(zhǎng)沙市天心區(qū)芙蓉中路三段398號(hào)新時(shí)空大廈5樓
聯(lián)系電話(huà)/ (+86 0731)88282200
品牌服務(wù)專(zhuān)線(xiàn)/ 400-966-8830
旗下運(yùn)營(yíng)網(wǎng)站:
Copyright ? 2016 廣州思洋文化傳播有限公司,保留所有權(quán)利。 粵ICP備09033321號(hào)