java Collection 之Set使用說(shuō)明
Set
一個(gè)不包含重復(fù)元素的collection,確切的講,set不包含滿足e1.equals(e2)的元素對(duì)e1,e2,并且最多包含一個(gè)null元素;
此實(shí)現(xiàn)不是同步的,如果多個(gè)線程同時(shí)訪問(wèn)一個(gè)set,而其中至少一個(gè)線程修改了該set,那么它必須保持外部同步,通常是通過(guò)對(duì)自然封裝該set的對(duì)象執(zhí)行同步操作來(lái)完成,如果不存在這樣的對(duì)象,則:Collections.synchronizedSet();
HashSet
集合中元素?zé)o順序,不重復(fù);數(shù)據(jù)結(jié)構(gòu)是哈希表;
保證元素唯一性的原理:判斷元素的HashCode值是否相同,若相同,還會(huì)繼續(xù)判斷元素的equals方法,是否為true; 當(dāng)一個(gè)對(duì)象被存儲(chǔ)進(jìn)HashSet集合中后,就不能修改這個(gè)對(duì)象的那些參與計(jì)算哈希值的字段了,如果修改后就會(huì)造成內(nèi)在泄漏;
TreeSet
可以對(duì)Set集合中的元素進(jìn)行排序:
(1)讓元素自身具備比較性,元素需要實(shí)現(xiàn)Comparable接口,覆蓋compareTo方法,這種方式也成為元素的自然順序;
(2)元素自身不具備比較性,或者具備的比較性不是所需要的,這時(shí)就需要讓集合自身具備比較性。在集合初始化時(shí)就有了比較方式[定義比較器(Comparator<>接口),將它作為參數(shù)傳給集合的構(gòu)造函數(shù)]
以下兩種方式為T(mén)reeSet需要實(shí)現(xiàn)的兩種接口
class Obj implements Comparable<Obj> {
public int compareTo(Obj o) {
return this.name.compareTo(o.name);
} }
class Comptor implements Comparator<ComptorObj> {
@Override
public int compare(ComptorObj o1, ComptorObj o2) {
return o1.name.compareTo(o2.name);
} }
相關(guān)文章
利用IDEA社區(qū)版創(chuàng)建SpringBoot項(xiàng)目的詳細(xì)圖文教程
大家應(yīng)該都知道Idea社區(qū)版本,默認(rèn)是不能創(chuàng)建SpringBoot項(xiàng)目的,下面這篇文章主要給大家介紹了關(guān)于利用IDEA社區(qū)版創(chuàng)建SpringBoot項(xiàng)目的詳細(xì)圖文教程,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04五種SpringBoot實(shí)現(xiàn)數(shù)據(jù)加密存儲(chǔ)的方式總結(jié)
這篇文章主要為大家詳細(xì)介紹了五種常見(jiàn)數(shù)據(jù)加密存儲(chǔ)的方法(結(jié)合SpringBoot和MyBatisPlus框架進(jìn)行實(shí)現(xiàn)),文中的示例代碼講解詳細(xì),需要的可以參考下2023-11-11java token生成和校驗(yàn)的實(shí)例代碼
這篇文章主要介紹了java token生成和校驗(yàn)的實(shí)例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09Java基本語(yǔ)法之內(nèi)部類(lèi)示例詳解
本文帶大家認(rèn)識(shí)Java基本語(yǔ)法——內(nèi)部類(lèi),將一個(gè)類(lèi)定義放在另一類(lèi)的定義的內(nèi)部,這個(gè)就是內(nèi)部類(lèi),內(nèi)部類(lèi)允許將一些邏輯相關(guān)的類(lèi)組織在一起,并能夠控制位于內(nèi)部的類(lèi)的可視性,感興趣的可以了解一下2022-03-03IDEA中的pom.xml文件無(wú)法識(shí)別問(wèn)題及解決
這篇文章主要介紹了IDEA中的pom.xml文件無(wú)法識(shí)別問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11