1. 程式人生 > >Java基礎系列(二)

Java基礎系列(二)

集合

一、Java集合構架支援三種類型的集合:規則集(set)、線性表(list)和圖(map),它們分別定義在介面
Set 、List與 Map 中。 Set 的例項儲存一組互不相同的元素,List 的例項儲存一組順序排列的元素,Map的例項儲存一組物件,每個物件都有一個關聯的鍵值。

在這裡插入圖片描述
map

Collection***************************************************************

在這裡插入圖片描述
注:addAll 、removeAll 、retainAll 方法與集合的並、差、交運算類似。
HashSet、LinkedHashSet和TreeSet


這三個類都是實現了Set介面的,所以此三個集合中的元素都是不同的。
HashSet是最基本的,
LinkedHashSet是按元素插入的順序進行儲存,
TreeHashSet中的元素總是保持元素的大小關係,所以新增到樹形集中的元素必須是可比較的
TreeSet可以由HashSet物件構造,相當於把HashSet集合排序。
TreeSet還可以用實現了Comparator的例項構建,例項中compare引數可以接受的型別都可以放到集合中。
在沒有特別需要時,最好選擇HashSet,因為HashSet簡單,效率高

ArrayList、LinkedList和Vector。
ArrayList相當於陣列,LinkedList相當於連結串列
若要提取元素以及線上性表的尾部插入或刪除元素, ArrayList 是高效的。
若要線上性表的任意位置上插入和刪除元素, LinkedList 的執行效率要高一些。
Vector就是同步的ArrayList

Map******************************************************

在這裡插入圖片描述

HashMap、LinkedHashMap和TreeMap
同上。

總結
●如果涉及到堆疊,佇列等操作,應該考慮用List,對於需要快速插入,刪除元素,應該使用LinkedList,
如果需要快速隨機訪問元素,應該使用ArrayList。

●如果程式在單執行緒環境中,或者訪問僅僅在一個執行緒中進行,考慮非同步的類,其效率較高,
如果多個執行緒可能同時操作一個類,應該使用同步的類。

●要特別注意對雜湊表的操作,作為key的物件要正確複寫equals和hashCode方法。

●儘量返回介面而非實際的型別,如返回List而非ArrayList,這樣如果以後需要將ArrayList換成LinkedList時,
客戶端程式碼不用改變。這就是針對抽象程式設計。