java集合快速瞭解,讀完之後,大部分程序員收藏了...


java集合快速瞭解,讀完之後,大部分程序員收藏了...

Java集合大致分為Set、List、Queue、Map四個體系 。Collection: List和Set,Queue繼承自Collection接口。

|--List:
|--ArrayList
|--Vector
|--LinkedList

|--Set:
|--HashSet
|--TreeSet

|--LinkedHashSet

|--Queue: 隊列集合,有PriorityQueue類

List:有序且允許元素重複。ArrayList、LinkedList和Vector是三個主要的實現類。

Set:不允許元素重複。HashSet和TreeSet是兩個主要的實現類。

Map:也屬於集合系統,前兩個繼承至collection接口,Map為獨立接口。Map是key對value的映射集合,其中key列就是一個集合。key不能重複,但是value可以重複。HashMap、Hashtable,TreeMap,LinkedHashMap前三個主要的實現類。

  • TreeMap是有序的,HashMap和HashTable是無序的。
  • Hashtable的方法是同步的,HashMap的方法不是同步的。這是兩者最主要的區別。

Collection的功能概述:

A:添加功能:boolean add(E e)確保此 collection 包含指定的元素(可選操作)。


B:刪除功能:boolean remove(Object o)從此 collection 中移除指定元素的單個實例,如果存在的話(可選操作)。
C:判斷功能:boolean isEmpty()如果此 collection 不包含元素,則返回 true。
      boolean contains(Object o)如果此 collection 包含指定的元素,則返回 true
D:獲取功能:Iterator iterator()返回在此 collection 的元素上進行迭代的迭代器。
E:長度功能:int size()返回此 collection 中的元素數。
F:交集(瞭解):boolean retainAll(Collection> c)僅保留此 collection 中那些也包含在指定 collection 的元素(可選操作)。
G:把集合轉數組(瞭解):Object[] toArray()返回包含此 collection 中所有元素的數組。

— List 有序,可重複

ArrayList
優點: 底層數據結構是數組,查詢快,增刪慢。
缺點: 線程不安全,效率高
Vector
優點: 底層數據結構是數組,查詢快,增刪慢。
缺點: 線程安全,效率低
LinkedList
優點: 底層數據結構是鏈表,查詢慢,增刪快。
缺點: 線程不安全,效率高
—Set 無序,唯一

HashSet和LinkHashSet允許存在null值,TreeSet中插入null數據時會報NullPointerException。HashSet的底層數據結構是哈希表,通過hashCode()和equals()方法保證集合元素的唯一性,首先用hashCode()比較的是兩個對象的哈希值是否相同,如果相同則繼續比較equals,equals比較的是兩個成員變量的值是否相同,相同返回true不添加,否則則添加集合元素。一般在用hashSet的時候有重複元素時候,需要重寫equals方法。

有元素A和B,當通過hashCode()得到的哈希值相同的時候,只要equels不相等,根據“衝突檢測機制”,會在A元素的內部索引位置新建一個鏈接表,將A和B串起來放在該位置。

HashSet
底層數據結構是哈希表。(無序,唯一)
如何來保證元素唯一性?
1.依賴兩個方法:hashCode()和equals()

LinkedHashSet
底層數據結構是鏈表和哈希表。(FIFO插入有序(按插入順序排序的),唯一)
1.由鏈表保證元素有序
2.由哈希表保證元素唯一

TreeSet
底層數據結構是紅黑樹。(唯一,有序)
1. 如何保證元素排序的呢?
自然排序
比較器排序


2.如何保證元素唯一性的呢?
根據比較的返回值是否是0來決定

關注

感謝閱讀,如果這篇文章幫助了您,歡迎 點贊收藏,關注轉發 喲。您的幫助是我們前行的動力,我們會提供更多有價值的內容給大家... 謝謝!


分享到:


相關文章: