抽象數據類型abstract data type,ADT:帶有一組操作的一些對象的集合
表ADT
- 數組
- 查詢:花費常規時間O(1)
- 插入、刪除:O(N)或O(1),因為數組的項必須移動
head tail
1 2 4 5 6 7
^
5 1 2 4 5 6 7
- 鏈表
- 避免插入和刪除的線性開銷
- 由一系列節點組成,這些節點在內存中不必相連。
-
api
Collection接口
Iterator接口
- 如果對正在被迭代的集合進行結構上的改變(即對該集合使用add/remove或clear方法),那么迭代器就不再合法(并且在其后使用該迭代器時會有ConcurrentModificationException異常被拋出),由增強for循環所使用的基礎迭代器是非法的,我們不能期待增強的for循環懂得只有當一項不被刪除時它才必須向前推進。合理的做法是,用迭代器找到需要滿足條件的項時,使用該迭代器的remove方法。
jdk8 Collection.removeIf(Predicate<? super E> filter)