Java基礎(chǔ)—set集合

Set集合

????Set集合中元素是無序的,不可以重復(fù),在Set集合中存儲的對象,不存在兩個對象equals比較為true的情況。

????1)HashSet和TreeSet是Set集合中的兩個實現(xiàn)類,分別用hash表和二叉樹的方式實現(xiàn)Set集合,HashSet是通過散列集合實現(xiàn)Set的。

????2)Set集合中沒有g(shù)et(int index)方法,不能像在List集合中,通過下標去得到對應(yīng)的元素。如果想要的到元素,則使用Iterator迭代器。

3)向Set集合中添加元素 可以使用add()方法,但是增加的元素不會再集合末尾添加,因為Set集合中元素是無序的。

Set<String>?set?=?new?HashSet<String>()?;????//多態(tài)
set.add("a");
set.add("b");
set.add("c");
//普通循環(huán),使用Iteraotr迭代器迭代
Iterator?it?=?(String)set.iterator()?;
while(it.hasNext()){
????String?str?=?(String)it.next()?;
????System.out.println(str)?;
}
//增強for循環(huán)遍歷Set集合
for(String?str:set){
????System.out.println(str)?;
}


?4)hashCode對HashSet的影響。如果我們不重寫hashCode,那么我們使用的就是Object提供的,而該方法是返回地址。也就是不同的對象,hashCode不同。

????5)對于重寫了equals方法的對象,強烈要求重寫繼承自O(shè)bject類的hashCode方法,因為是否重寫hashCode方法對操作集合有影響。

????6)重寫hashCode需要注意兩點:

????????①與equals方法的一致性,通過equals方法比較返回為true的對象,其hashCode的方法返回的對象一致。

????????②hashCode方法返回的值應(yīng)該符合hash算法要求。

????7)boolean contains(Object obj)方法:查看對象是否存在Set集合中。

Set<Point>?set?=?new?HashPoint<Point>()?;
//Point?point?=?new?Point(1,2)?;????set.add(point)?;
set.add(new?Point(1,2));
set.add(new?Point(3,4));
System.out.println(set.contains(new?Point(1,2)));

????8)

Set<Point>?set=?new?HashSet<Point>()?;
Point?p1?=?new?Point(1,2);
Point?p2?=?new?Point(3,4);
System.out.println("兩個對象是否是一個對象"+(p1==p2));
System.out.println("兩個對象內(nèi)容是否相同"+(p1.equals(p2)));
System.out.println("兩個對象hashCode是否相同"+(p1.hashCode()==p2.hashCode()));
????set.add(p1);
????set.add(p2);
???System.out.println("hashSet集合中元素個數(shù)"+set.size())?;
???for(Point?p:set){
???????System.out.println(p)?;
???}

????9)Set集合中保存不同對象時,不會保存既hashCode()相同又equals相同的對象,缺一不可,否則HashSet不認為他們是重復(fù)的值。

Set<Point>?set?=?new?HashPoint<Point>()?;


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 上一篇文章介紹了Set集合的通用知識。Set集合中包含了三個比較重要的實現(xiàn)類:HashSet、TreeSet和En...
    Ruheng閱讀 16,148評論 3 57
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,734評論 18 399
  • 3.3 集合 一方面, 面向?qū)ο笳Z言對事物的體現(xiàn)都是以對象的形式,為了方便對多個對象的操作,就要對對象進行存儲。另...
    閆子揚閱讀 839評論 0 1
  • java筆記第一天 == 和 equals ==比較的比較的是兩個變量的值是否相等,對于引用型變量表示的是兩個變量...
    jmychou閱讀 1,656評論 0 3
  • 集合框架: 1)特點:存儲對象;長度可變;存儲對象的類型可不同2)Collection(1)List:有序的;元素...
    Demo_Yang閱讀 1,386評論 0 4

友情鏈接更多精彩內(nèi)容