1. 程式人生 > >Java裏的集合:List/Set/Map

Java裏的集合:List/Set/Map

的區別 hashmap 都是 lan 返回 紅黑樹 sdn 裏的 鏈表

首先對List/Set/Map進行說明:

1. 三者都是接口, List和Set繼承至Collection接口,Map為獨立的接口

2. List是無序的、Set是有序的。Map中既有有序的實現類也有無序的實現類。

一、List

1. 無序

2. List包含:ArrayList、LinkedList、Vector。

  * ArrayList: 底層結構為數組、線程不安全

  * LinkedList: 底層結構為鏈表、線程不安全

  * Vector: 底層結構為數組、線程安全

3. 補充說明:

  *數組實現:查詢快,增加刪除操作慢

  * 鏈表實現:查詢慢,增加刪除操作快

二、Set

1. 有序

2. Set包含:HashSet、LinkedHashSet、TreeSet

  * HashSet: 底層結構為哈希表

  * LinkedHashSet: 底層結構為鏈表+哈希表 (FIFO)

  * TreeSet: 底層結構為紅黑樹

3. 補充說明:

  * 哈希表可以保證唯一性 (hashCode()和equals())

  * 鏈表可以保證有序性

  * 紅黑樹可以保證有序性和唯一性 (有序性:平衡二叉樹;唯一性:compare(Object o)的返回值是否為0來判斷) 參考來源

三、Map

1. TreeMap 有序、HashMap和HashTable無序

2. HashMap與HashTable的區別

  * HashTable是同步的、線程安全,但是效率會慢

  * HashMap是非同步的。線程不安全,效率較快

  * HashTable不允許空值、HashMap允許空值

  * HashTable的父類為Dictionary,HashMap的父類為AbstractMap

參考來源:

1. https://blog.csdn.net/zhangqunshuai/article/details/80660974

2. https://blog.csdn.net/dch9210/article/details/50951690

Java裏的集合:List/Set/Map