久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Java之HashSet詳解

 太極混元天尊 2018-05-23


推薦閱讀:


HashSet原理


該類實(shí)現(xiàn)了Set接口,,不允許出現(xiàn)重復(fù)元素,,不保證集合中元素的順序,允許包含值為null的元素,,但最多只能一個(gè),。


對(duì)于 HashSet 而言,HashSet繼承自AbstractSet,,它是基于 HashMap 實(shí)現(xiàn)的,,HashSet 底層使用HashMap 來保存所有元素。


因此HashSet的實(shí)現(xiàn)比較簡(jiǎn)單,,相關(guān) HashSet 的操作,,基本上都是直接調(diào)用底層 HashMap 的相關(guān)方法來完成,我們應(yīng)該為保存到 HashSet 中的對(duì)象覆蓋 hashCode() 和 equals()


構(gòu)造方法


HashSet()

          構(gòu)造一個(gè)新的空 set,,其底層 HashMap 實(shí)例的默認(rèn)初始容量是 16,,加載因子是 0.75。


HashSet(Collection c)

          構(gòu)造一個(gè)包含指定 collection 中的元素的新 set,。


HashSet(int initialCapacity)

          構(gòu)造一個(gè)新的空 set,,其底層 HashMap 實(shí)例具有指定的初始容量和默認(rèn)的加載因子(0.75)。


HashSet(int initialCapacity, float loadFactor)

          構(gòu)造一個(gè)新的空 set,,其底層 HashMap 實(shí)例具有指定的初始容量和指定的加載因子,。



常用方法


size() 

          返回此 set 中的元素的數(shù)量(set 的容量)。


isEmpty()

          如果此 set 不包含任何元素,,則返回 true,。


add(E e)

          如果此 set 中尚未包含指定元素,則添加指定元素,。


iterator()

          返回對(duì)此 set 中元素進(jìn)行迭代的迭代器,。


remove(Object o)

          如果指定元素存在于此 set 中,則將其移除,。


contains(Object o)

          如果此 set 包含指定元素,,則返回 true,。


clear()

          從此 set 中移除所有元素。


size() 


          返回此 set 中的元素的數(shù)量(set 的容量),。

HashSet set = new HashSet<>();
set.add('zhangsan1');
System.out.println('set的元素個(gè)數(shù):' + set.size());

結(jié)果:
set的元素個(gè)數(shù):1


isEmpty()


          如果此 set 不包含任何元素,,則返回 true。

HashSet set = new HashSet<>();
set.add('zhangsan1');
System.out.println('isEmpty方法:' + set.isEmpty());

//false表示為不為空
結(jié)果為:isEmpty方法:false


add(E e)


          如果此 set 中尚未包含指定元素,,則添加指定元素,。

HashSet set = new HashSet<>();
//添加一個(gè)元素
set.add('zhangsan1');
System.out.println('set的元素個(gè)數(shù):' + set.size());

結(jié)果:
set的元素個(gè)數(shù):1


iterator()


          返回對(duì)此 set 中元素進(jìn)行迭代的迭代器。

HashSet set = new HashSet<>();
set.add('zhangsan1');
set.add('zhangsan2');
set.add('zhangsan3');
set.add('zhangsan4');
/**
* 創(chuàng)建迭代器
*/

Iterator iterator = set.iterator();
while (iterator.hasNext()) {
 //打印每個(gè)元素
 System.out.println(iterator.next());
}

結(jié)果:
zhangsan1
zhangsan3
zhangsan2
zhangsan4


contains(Object o)


          如果此 set 包含指定元素,,則返回 true,。

HashSet set = new HashSet<>();
set.add('zhangsan1');
set.add('zhangsan2');
set.add('zhangsan3');
set.add('zhangsan4');
/**
* 判斷set中是否包含zhangsan2,true表示有,false表示沒有
*/

System.out.println(set.contains('zhangsan2'));


結(jié)果:true


clear()


          從此 set 中移除所有元素,。

HashSet set = new HashSet<>();
set.add('zhangsan1');
set.add('zhangsan2');
set.add('zhangsan3');
set.add('zhangsan4');

System.out.println('清空之前:' +set.size());
/**
* 清空set所有數(shù)據(jù)
*/

set.clear();
System.out.println('清空之后:' +set.size());

結(jié)果:清空之前:4
   清空之后:0


總結(jié)

HashSet


1.實(shí)現(xiàn)原理,,基于哈希表(hashmap)實(shí)現(xiàn)。


2. 不允許重復(fù)鍵存在,,但可以有null值,。


3. 哈希表存儲(chǔ)是無序的。


4. 添加元素時(shí)把元素當(dāng)作hashmap的key存儲(chǔ),,HashMap的value是存儲(chǔ)的一個(gè)固定值object


5. 排除重復(fù)元素是通過equals檢查對(duì)象是否相同,。


6. 判斷2個(gè)對(duì)象是否相同,先根據(jù)2個(gè)對(duì)象的hashcode比較是否相等(如果兩個(gè)對(duì)象的hashcode相同,,它們也不一定是同一個(gè)對(duì)象,,如果不同,那一定不是同一個(gè)對(duì)象)如果不同,,則兩個(gè)對(duì)象不是同一個(gè)對(duì)象,,如果相同,在將2個(gè)對(duì)象進(jìn)行equals檢查來判斷是否相同,,如果相同則是同一個(gè)對(duì)象,,不同則不是同一個(gè)對(duì)象。


7. 如果要完全判斷自定義對(duì)象是否有重復(fù)值,,這個(gè)時(shí)候需要將自定義對(duì)象重寫對(duì)象所在類的hashcode和equals方法來解決,。


8. .哈希表的存儲(chǔ)結(jié)構(gòu)就是:數(shù)組+鏈表,數(shù)組的每個(gè)元素都是以鏈表的形式存儲(chǔ)的,。


以上就是HashSet的常用方法,,還有一些繼承過來的方法,大家可以自行測(cè)試一下,。如果有疑問了可以到小編的初學(xué)者交流群和小編一起交流,,提問,小編會(huì)在第一時(shí)間與你溝通。


 

公眾號(hào)資源免費(fèi)分享?。,。?/p>

2017年某培訓(xùn)班最新視頻+幾十個(gè)項(xiàng)目免費(fèi)分享 公眾號(hào)輸入“我要視頻”


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多