??Java容器的用途是“保存對象”,并將其劃分為兩個不同概念。
??(1) Collection:一個對立的元素序列,這些元素都服從一條或多條規(guī)則。List必須按照插入的順序保存元素,而Set不能有重復元素。Queue按照排隊規(guī)則來確定對象產(chǎn)生的順序(通常與他們被插入的順序相同)。
??(2) Map:一組成對的“鍵值對”對象,允許使用鍵來查找值。ArrayList允許使用數(shù)字查找值,因此從某種意義上講,他將數(shù)字與對象關聯(lián)在了一起。映射表允許我們使用另一個對象來查找某個對象,它也被成為“關聯(lián)數(shù)組”,因為它將某些對象與另外一些對象關聯(lián)在了一起;或者被稱為“字典”。
Collection:
-
List:
- ArrayList:隨機訪問較快,但在List的中間插入和移除元素時較慢。
- LinkedList:在List的中間插入和移除元素較快,隨機訪問較慢,特性集較ArrayList更大。
-
Set:
- HashSet:查詢速度最快,但無序。
- TreeSet:按比較結(jié)果的升序保存對象。
- LinkedHashSet:按添加順序保存對象。
Map:
- HashMap:查詢速度最快。
- TreeMap:按比較結(jié)果的升序保存鍵。
- LinkedHashMap:按插入順序保存鍵。
迭代器:
Java的Iterator只能單向移動,這個Iterator只能用來:
- 使用方法iterator()要求容器返回一個Iterator。Iterator將準備好返回序列的第一個元素。
- 使用next()獲得序列中的下一個元素。
- 使用hasNext()檢查序列中是否還有元素。
- 使用remove()將迭代器新近返回的元素刪除。
Iterator的真正威力:能夠?qū)⒈闅v序列的操作與序列底層的結(jié)構(gòu)分離。
ListIterator:Iterator的子類型,它只能用于各種List類的訪問,但ListIterator可以雙向移動。它還可以產(chǎn)生相對于迭代器在列表中指向的當前位置的前一個和后一個元素的索引,并且可以使用set()方法替換它訪問過的最后一個元素。