date: 2017-01-15 10:10:16
關係圖:
有序無序圖:
註解:需要排序是說該集合提供排序介面,需要我們自己實現排序介面。
如:treeset需要排序
new treeset(new comparator(t)()
});由於arraylist,vector,stack都是使用陣列實現的,所以都是有序的,可隨機訪問的;而linkedlist是鍊錶也是有序的。所以總結得出,list集合下面的實現基本都是有序的,並且可以重複新增的。
e next();
boolean hasnext();
void remove();
iteratorit=list.iterator();
it.next();
it.remove();//成功。
如果沒有先讀區next,而是直接
it.remover();//失敗。
如果是這樣
it.next();
it.remover();//成功
it.remover();//失敗
listiterator是乙個繼承iterator的介面,它是佇列迭代器。專門用於遍歷list,能提供向前和向後遍歷。相比於iterator,它新增了新增、是否存在上乙個元素、獲取上乙個元素等api介面。
addfrist();將指定元素插入此列表的開頭
addlast();
getfrist();返回此列表的第乙個元素
getlast();
getfrist()和getlast()方法是獲取元素,如果集合中沒有元素,會丟擲nosuchelementexception
removefrist();
removelast();
map中的key都是通過hash演算法來得出的,所有key都是不可以重複的,如果有重複的後者覆蓋前者,所以map介面的實現類基本都是key不可重複的。
hashmap,hashtable,weakhashmap都是通過雜湊解決衝突中的」拉鍊法「來實現的,他們也都是無序的。而treemap的key是hash,但是他時通過紅黑樹陣列結構來儲存的,所以它是有序的。
set集合裡面的實現都是通過hashmap或者treemap中的key來實現的(map中的value在set集合裡面都使用new object來代替)。
所以他們是無序的,treeset可以有序,同時也是不可重複的。
JAVA 集合總結
如果涉及到堆疊,佇列等操作,應該考慮用list,對於需要快速插入,刪除元素,應該使用linkedlist,如果需要快速隨機訪問元素,應該使用arraylist。如果程式在單執行緒環境中,或者訪問僅僅在乙個執行緒中進行,考慮非同步的類,其效率較高,如果多個執行緒可能同時操作乙個類,應該使用同步的類。要...
java 集合總結
結構 collection list linkedlist arraylist vector stack set map hashtable hashmap weakhashmap 區別 類是否有序 是否執行緒安全 是否允許重複 是否允許空值 常用情景 描述總結 linkedlist有序否 是是對於...
java集合總結
set 其中的值不允許重複,無序的資料結構 list 其中的值允許重複,因為其為有序的資料結構 map 成對的資料結構,健值必須具有唯一性 鍵不能同,否則值替換 list按物件進入的順序儲存物件,不做排序或編輯操作。set對每個物件只接受一次,並使用自己內部的排序方法 通常,你只關心某個元素是否屬於...