抽象数据类型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
- 如果对正在被迭代的集合进行结构上的改变(即对该集合使用add/remove或clear方法),那么迭代器就不再合法(并且在其后使用该迭代器时会有ConcurrentModificationException异常被抛出),由增强for循环所使用的基础迭代器是非法的,我们不能期待增强的for循环懂得只有当一项不被删除时它才必须向前推进。合理的做法是,用迭代器找到需要满足条件的项时,使用该迭代器的remove方法。
jdk8 Collection.removeIf(Predicate<? super E> filter)