# list 实现
list 实现也分为通用实现和专用实现
# 通用实现
- ArrayList
- LinkedList
大多数时候,你可能会使用 ArrayList,他提供位置访问,速度快。它不必为每个元素分配一个节点。
可它可以利用 System.arraycopy
移动多个元素。没有同步的开销,而 Vector 有
如果你进程在元素的开头和在中间随机位置操作元素,你应该考虑使用 LinkedList。这些操作需要恒定的时间。
ArrayList 具有一个调整参数 - 初始容量。表示在扩容之前所能保存元素的容量 LinkedList 没有调整参数,但多了 6 个可选操作:addFirst,getFirst,removeFirst,addLast,getLast,和 removeLast。 LinkedList 也实现了 Queue 接口。
# 专用实现
CopyOnWriteArrayList
如果你 List 是固定的大小 - 也就是说,你永远不会使用 remove,add 或任何批量操作除了 containsAll- 你有第三个选择,绝对值得考虑:Arrays.asList 方便实施”部分。