集合 集合介面和迭代器介面 1.迭代器 iterator方法用於返回一個實現了Iterator介面的對象。 Iterator包含3個方法: 通過反覆調用next方法,可以逐個訪問集合中的每個元素。但是到了集合的末尾,next方法將拋出一個NoSuchElementException。因此需要在調用n ...
集合
集合介面和迭代器介面
1.迭代器
iterator方法用於返回一個實現了Iterator介面的對象。
Iterator包含3個方法:
public interface Iterator<E> { E next(); boolean hasNext(); void remove(); }
通過反覆調用next方法,可以逐個訪問集合中的每個元素。但是到了集合的末尾,next方法將拋出一個NoSuchElementException。因此需要在調用next之前調用hasNext方法。例如:
while(iter.hasNext()) { String element = iter.next(); do something with element }
或者用“for each”迴圈
for (String element : c) { do something with elemrnt }
2.刪除元素
Iterator介面的remove方法將會刪除上次調用next方法時返回的元素。p564
具體的集合
集合類型 | 描述 |
---|---|
ArrayList | 一種可以動態增長和縮減的索引序列 |
LinkedList | 一種可以在任何位置進行高效地插入和刪除操作的有效序列 |
ArrayDeque | 一種可以用迴圈數組實現的雙端序列 |
HashSet | 一種沒有重覆元素的無序集合 |
TreeSet | 一種有序集 |
HashMap | 一種存儲鍵/值關聯的數據結構 |
TreeMap | 一種鍵值有序排列的映射表 |
EnumMap | 一種鍵值屬於枚舉類型的映射表 |
散列集
- 散列碼是由對象的實例域產生的一個整數
- java里,散列表用鏈表數組實現。每個列表稱為桶bucket。
- 其中set類型是沒有重覆元素的的元素集合
- contains方法用來快速地查看是否某個元素已經出現在集中。只在某個桶中查找元素,而不必查看集合中的所有元素。
樹集TreeSet
- 樹集是一個有序集合,可以按照任意順序將元素插入到集合中,在遍歷時,每個值將自動地按照排序後的順序呈現。
- 排序是用樹結構完成的(p579例子中使用的是red-balck tree紅黑樹)
對象的比較
預設情況下樹集假定插入的元素實現了Compareable介面,如果a與b相等,調用a.compareTo(b)一定返回0,若排序後a位於b之前,則返回負值,若果a在b之後,則返回正值
Maps映射表
- 映射表用來存放鍵/值對
- 散列映射只對鍵進行散列,樹映射表用鍵的整體順序對元素進行排序,並將其組織成搜索樹。
- 如果在映射表中沒有與給定鍵對應的信息,get將返回null。
- remove方法用於從映射表中刪除給定鍵對應的元素。size方法用於返回映射表中的元素數。
- 鍵必須是唯一的。不能對同一個鍵存放兩個值。