天天看點

JAVA中的集合類map、set、list精練總結

1、JAVA集合類都放在java.util包中

2、JAVA集合類不能存放基本資料類型,隻能存放對象的引用。

3、Set:集合中對象不按特定的方式排序,并且沒有重複對象

4、List:集合中的對象按照檢索位置排序,可以有重複對象。

5、Map:集合中每一個元素包含一對鍵-值對象,集合中沒有重複的鍵對象,值對象可以重複。

*精煉的總結:

Collection 是對象集合, Collection 有兩個子接口 List 和 Set

List 可以通過下标 (1,2..) 來取得值,值可以重複

而 Set 隻能通過遊标來取值,并且值是不能重複的

ArrayList , Vector , LinkedList 是 List 的實作類

ArrayList 是線程不安全的, Vector 是線程安全的,這兩個類底層都是由數組實作的

LinkedList 是線程不安全的,底層是由連結清單實作的

Map 是鍵值對集合

HashTable 和 HashMap 是 Map 的實作類

HashTable 是線程安全的,不能存儲 null 值

HashMap 不是線程安全的,可以存儲 null 值

*Collection , List , Set 和 Map 用法和差別:

首先看一下他們之間的關系

Collection 接口的接口 對象的集合

├ List 子接口 按進入先後有序儲存 可重複

│├ LinkedList 接口實作類 連結清單 插入删除 沒有同步 線程不安全

│├ ArrayList 接口實作類 數組 随機通路 沒有同步 線程不安全

│└ Vector 接口實作類 數組 同步 線程安全

│   └ Stack

└ Set 子接口 僅接收一次,并做内部排序

├ HashSet

│   └ LinkedHashSet

└ TreeSet

對于 List ,關心的是順序, 它保證維護元素特定的順序(允許有相同元素),使用此接口能夠精确的控制每個元素插入的位置。使用者能夠使用索引(元素在 List 中的位置,類似于數組下标)來通路 List 中的元素。

對于 Set ,隻關心某元素是否屬于 Set (不 允許有相同元素 ),而不關心它的順序。

Map 接口 鍵值對的集合

├ Hashtable 接口實作類 同步 線程安全

├ HashMap 接口實作類 沒有同步 線程不安全

│├ LinkedHashMap

│└ WeakHashMap

├ TreeMap

└ IdentifyHashMap

集合的選擇标準:

存放要求

無序-Set

有序-List

“key-value”對-Map

讀和改的效率

Hash*-兩者都最高

Array*-讀快改慢

Linked*-讀慢改快

*

*

Collection接口

Iterator接口

Comparable接口、Comparator接口

Set、List、Map接口

Collections類

ArrayList、LinkedList類

HashSet、LinkedHashSet、TreeSet類

HashMap、LinkedHashMap、TreeMap類

Properties類