Java基礎(chǔ)-常用的集合類有哪些?

Java中常用到的集合包括三大類Set、List、Map。首先講一下自己對于這三大類集合的理解:

Set主要用到的是HashSet和TreeSet兩類。HashSet就目前我在工作中常用到的就是它的去重功能(實(shí)際工作中業(yè)務(wù)邏輯需要對集合數(shù)據(jù)進(jìn)行去重的時(shí)候)。這里就引出HashSet的基本特點(diǎn)了:

HashSet 無序、不允許有重復(fù)數(shù)據(jù)(基于equals方法的返回值實(shí)現(xiàn)去重)。另外,還有一個(gè)名叫LinkedHashSet的實(shí)現(xiàn)類,除了使用HashCode來決定元素位置之外,同時(shí)還是用了鏈表來維護(hù)元素的次序(Linked),因此對其插入元素時(shí),看起來是有序的。

TreeSet工作中沒有接觸,來一段網(wǎng)絡(luò)知識(shí):

TreeSet是SortedSet接口的唯一實(shí)現(xiàn)類,TreeSet可以確保集合元素處于排序狀態(tài)。TreeSet支持兩種排序方式,自然排序 和定制排序,其中自然排序?yàn)槟J(rèn)的排序方式。

向TreeSet中加入的應(yīng)該是同一個(gè)類的對象。TreeSet判斷兩個(gè)對象不相等的方式是兩個(gè)對象通過equals方法返回false,或者通過CompareTo方法比較大小返回0。

自然排序

自然排序使用要排序元素的CompareTo(Object obj)方法來比較元素之間大小關(guān)系,然后將元素按照升序排列。Java提供了一個(gè)Comparable接口,該接口里定義了一個(gè)compareTo(Object obj)方法,該方法返回一個(gè)整數(shù)值,實(shí)現(xiàn)了該接口的對象就可以比較大小。obj1.compareTo(obj2)方法如果返回0,則說明被比較的兩個(gè)對象相等,如果返回一個(gè)正數(shù),則表明obj1大于obj2,如果是 負(fù)數(shù),則表明obj1小于obj2。如果我們將兩個(gè)對象的equals方法總是返回true,則這兩個(gè)對象的compareTo方法返回應(yīng)該返回0。

定制排序

自然排序是根據(jù)集合元素的大小,以升序排列,如果要定制排序,應(yīng)該使用Comparator接口,實(shí)現(xiàn) int compare(T o1,T o2)方法。

從上面的引文可以看出,對于集合的排序可以使用元素本身比較大小的方法(前提是實(shí)現(xiàn)了Comparable接口的對象);或者去實(shí)現(xiàn)Comparator接口的compare()方法來自定義一套比較大小的邏輯。

List分為ArrayList和LinkedList,List是有序集合,允許有重復(fù)數(shù)據(jù)的存在。前者是基于數(shù)組的原理存儲(chǔ)數(shù)據(jù),后者是基于鏈表的原理存儲(chǔ)數(shù)據(jù)。

List是有順序的,因此List肯定是可以排序的。考慮到這一點(diǎn),Java創(chuàng)造者們早就給我們準(zhǔn)備好了趁手的工具——Collections,長得有點(diǎn)像Set和List的お父さん(父親),其實(shí)根本不是一個(gè)世界的人(類);

關(guān)于Collections

這是官方提供的一個(gè)處理集合的工具方法的集合,下面來仔細(xì)看看這個(gè)便利的方法:

sort()方法排序的本質(zhì)其實(shí)也是借助Comparable接口和Comparator接口的實(shí)現(xiàn),一般有2種用法:

1、直接將需要排序的list作為參數(shù)傳入,此時(shí)list中的對象必須實(shí)現(xiàn)了Comparable接口,然后sort會(huì)按升序的形式對元素進(jìn)行排序;

2、傳入list作為第一個(gè)參數(shù),同時(shí)追加一個(gè)Comparator的實(shí)現(xiàn)類作為第二個(gè)參數(shù),然后sort方法會(huì)根據(jù)Comparator接口的實(shí)現(xiàn)類的邏輯,按升序進(jìn)行排序;

Map分為HashMap和LinkedHashMap。Map的存儲(chǔ)形式是以鍵值(Entry)對的方式存在的,存儲(chǔ)原理是根據(jù)key的hashcode值來進(jìn)行散列分布的。具體的實(shí)現(xiàn)原理會(huì)在“HashMap的實(shí)現(xiàn)原理”的文章里進(jìn)行詳解,這里不再贅述。

本文根據(jù)http://www.itdecent.cn/p/820fd1b89c6a歸納整理完成

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

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

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