结构
Map
├── HashMap
│ └── LinkedHashMap
├── SortedMap (接口)
│ └── TreeMap
└── Hashtable (遗留类,线程安全)
Collection
├── List(ListIterator可用)
│ ├── ArrayList
│ ├── LinkedList
│ ├── Vector
│ │ └── Stack
├── Set
│ ├── HashSet
│ │ └── LinkedHashSet
│ └── TreeSet
└── Deque (通常由 ArrayDeque 实现)
└── ArrayDeque
选代器与类集
两种多次循环时不同
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {String item = iterator.next();if ("B".equals(item)) {iterator.remove(); // SAFE}
}
隐式遍历(for循环增强)会自动创建迭代器
隐式遍历不使用迭代器会 modCount != expectedModcount
ConcurrentModificationtExece
ption
创建迭代器时,使用泛型
否则会变成原始类型,变成object对象(raw类型),拿出时需要指定类型,不安全
(当然,只读时foreach即可
迭代器用法总结
多
键值对Key-Value:Map (HashMap
单
去重?Set: (HashSet
重复且有顺序?List: (ArrayList
FIFO or LIFO ? Deue: (ArrayDeque