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類