標籤:插入資料 操作 線程 指標 inf iterable tor 迭代 treemap
- Iterable
- 所有集合的初始介面,實現該介面可進行foreach操作,只有一個iterator()方法,並返回iterator類型;
- Iterable在java.lang下,Iterator在java.util下,Iterator主要包括hasNext(), next(), remove();
- 所有實現了Iterable就可以操作迭代器iterator, 但能使用迭代器iterator就未必實現了Iterable介面,如數組?
- 為什麼需要Iterable? 因為Iterator中的next(), hasNext()依賴於當前迭代器中迭代的位置(指標),如果Collection直接實現Iterator會使迭代位置不可知,需要增加reset重設當前迭代,但也只能存在一個當前迭代;而Iterable每次可從頭開始計數,而且多個迭代互不影響。
- Collection
- 一個基本集合介面,包含一組Object元素;
- 在java.util下,同時Collections是一個工具類,包含對集合各類操作的靜態方法,比如sort;
- Collection下有三個子介面:List, Set, Queue
- List
- 有序(保持插入資料時的順序)、可重複的集合;
- 子類ArrayList是基於數組實現的,但size動態可變化的;
- 子類LinkedList實現 List<E>, Deque<E>, Cloneable, Serializable,雙向鏈表介面;可作為雙向Queue使用,也可以當做Stack使用;
- ArrayList查詢效率高於LinkedList, 因為訪問LinkedList中的元素,需要每次從頭指標開始移動,而ArrayList可直接通過數組下標的方式擷取;但如果LinkedList通過Iterator, 則效率與ArrayList不會相差多少,因為Iterator方式遍曆會緩衝前後節點;
- ArrayList插入和刪除的效率會比LinkedList低,因為ArrayList每次插入或刪除元素時,該元素的後續下標位置也要做相應的調整。
- JDK1.2以後,Vector也是通過List介面實現的,Vector是安全執行緒的,ArrayList是非安全執行緒;
- Stack是Vector子類,其主要特徵是先進後出(FILO, First In Last Out)。
- Set
- Map
- 當把HashMap中的value都看成null時,可視為Set,其key的儲存形式與Set一致;
- TreeMap維護key以某種排序方式;
JAVA集合介面及類