java Collection 之Set使用說明
Set
一個(gè)不包含重復(fù)元素的collection,確切的講,set不包含滿足e1.equals(e2)的元素對e1,e2,并且最多包含一個(gè)null元素;
此實(shí)現(xiàn)不是同步的,如果多個(gè)線程同時(shí)訪問一個(gè)set,而其中至少一個(gè)線程修改了該set,那么它必須保持外部同步,通常是通過對自然封裝該set的對象執(zhí)行同步操作來完成,如果不存在這樣的對象,則:Collections.synchronizedSet();
HashSet
集合中元素?zé)o順序,不重復(fù);數(shù)據(jù)結(jié)構(gòu)是哈希表;
保證元素唯一性的原理:判斷元素的HashCode值是否相同,若相同,還會繼續(xù)判斷元素的equals方法,是否為true; 當(dāng)一個(gè)對象被存儲進(jìn)HashSet集合中后,就不能修改這個(gè)對象的那些參與計(jì)算哈希值的字段了,如果修改后就會造成內(nèi)在泄漏;
TreeSet
可以對Set集合中的元素進(jìn)行排序:
(1)讓元素自身具備比較性,元素需要實(shí)現(xiàn)Comparable接口,覆蓋compareTo方法,這種方式也成為元素的自然順序;
(2)元素自身不具備比較性,或者具備的比較性不是所需要的,這時(shí)就需要讓集合自身具備比較性。在集合初始化時(shí)就有了比較方式[定義比較器(Comparator<>接口),將它作為參數(shù)傳給集合的構(gòu)造函數(shù)]
以下兩種方式為TreeSet需要實(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)文章
spring Data jpa簡介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了spring Data jpa簡介的相關(guān)資料,需要的朋友可以參考下2017-09-09
Java?-jar參數(shù)設(shè)置小結(jié)
本文主要介紹了Java?-jar參數(shù)設(shè)置小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
Java中java.lang.ClassCastException異常原因及解決方法
大家好,本篇文章主要講的是Java中java.lang.ClassCastException異常原因及解決方法,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下2022-01-01
SpringBoot使用validation-api實(shí)現(xiàn)參數(shù)校驗(yàn)的示例
這篇文章主要介紹了SpringBoot使用validation-api實(shí)現(xiàn)參數(shù)校驗(yàn)的示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Dubbo服務(wù)校驗(yàn)參數(shù)的解決方案
這篇文章主要介紹了Dubbo服務(wù)如何優(yōu)雅的校驗(yàn)參數(shù),Dubbo框架本身是支持參數(shù)校驗(yàn)的,同時(shí)也是基于JSR303去實(shí)現(xiàn)的,今天通過示例代碼介紹下詳細(xì)實(shí)現(xiàn)過程,需要的朋友可以參考下2022-03-03
Java中的LinkedHashMap及LRU緩存機(jī)制詳解
這篇文章主要介紹了Java中的LinkedHashMap及LRU緩存機(jī)制詳解,LinkedHashMap繼承自HashMap,它的多種操作都是建立在HashMap操作的基礎(chǔ)上的,同HashMap不同的是,LinkedHashMap維護(hù)了一個(gè)Entry的雙向鏈表,保證了插入的Entry中的順序,需要的朋友可以參考下2023-09-09
Java設(shè)計(jì)模式之代理模式詳細(xì)解讀
這篇文章主要介紹了Java設(shè)計(jì)模式的代理模式,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)Java設(shè)計(jì)模式的小伙伴有很大的幫助,感興趣的小伙伴可以參考一下2021-08-08

