集合框架簡要描述

集合框架簡要歸納:

java集合框架中的接口.png
注:圖片出自《Core Java SE 9 for the Impatient》java

全部的集合接口都是泛型類型的,鼓勵在代碼中儘量地使用接口,一般Collection、List、Map就足夠了。
例如:在構造一個ArrayList後,將引用儲存在一個List類型的變量中:框架

List<String> words = new ArrayList<>();dom

接口簡單歸納

List

List是一個有序的集合。ArrayList類和LinkedList類實現了List接口。LinkedList插入操做很快————你只須要"拼接"節點便可。可是要達到鏈表中間會很緩慢,由於你須要從頭節點開始遍歷全部節點。ArrayList實現了RandomAccess接口,用來代表其支持快速(一般是固定時間)隨機訪問,而且ArrayList用for或者foreach訪問更快。spa

Set

在Set中,元素不會被插入特定的位置,而且不容許重複元素,能夠高效地檢測一個值是否是它的元素,當順序可有可無時,Set頗有用。
HashSet和TreeSet類都是實現了Set接口,若是想按順序遍歷集合,則可使用TreeSet。code

Map

Map儲存鍵值對,HashMap和TreeMap都實現了Map接口,HashMap類不保證映射的順序,特別是它不保證該順序恆久不變,若是須要按順序訪問鍵的話,則使用TreeMap。blog

使用getOrDefault()獲取鍵值更好

例子:獲取一個鍵對應的值接口

Map<String, Integer> counts = new HashMap<>();  
counts.put("Alice", 1);  
//若是鍵不存在的話,則get方法將會返回null,int不能爲null,當get的返回值進行拆箱操做時,會致使NullPointerException。
int count = counts.get("Alice");

改進版:
//這樣,若是鍵不存在,也會返回0。
int count = counts.getOrDefault("Alice", 0);

迭代器

Collection的父接口Iterable<T>定義了一個方法:
Iterator<T> iterator() 圖片

能夠用它來訪問全部元素:element

Collection<String> coll =...;  
Iterator<String> iter = coll.iterator();  
while (iter.hasNext()){  
    String element = iter.next();  
    //處理element  
}

這個例子中,能夠直接使用foreach:
for(String element : coll){
//處理element
}

Iterator接口也提供了一個remove方法,能夠移除以前訪問的元素。rem

while (iter.hasNext()){  
    String element = iter.next();  
    if(element fulfills the condition)
        iter.remove();
}
然而,使用removeIf方法更容易:
coll.removeIf(e -> e fulfills the condition)
相關文章
相關標籤/搜索