ArrayList、LinkedList是线性表的两种典型实现:基于数组的线性表和基于链的线性表。
Queue代表了队列,Deque代表了双端队列。
一般来说,由于数组以一块连续内存区来保存所有的数组元素,所以数组在随机访问时性能最好;
而内部以链表作为底层实现的集合在执行插入、删除操作时有较好的性能。
总体来说,ArrayList的性能比LinkedList性能要好,因此大部分时候都应该考虑ArrayList。
关于使用List集合有如下建议:
- 如果需要遍历List集合元素,对于ArrayList、Vector集合,应该使用随机访问方法(get)来遍历性能更好; 对于LinkedList集合,应该采用迭代器(Iterator)来遍历集合元素。
- 如果要经常改变包含大量数据的List集合,应该使用LinkedList集合。因为使用ArrayList、Vector集合可能需要经常重新分配内存。
- 如果有多个线程需要同时访问List集合中的元素,可以考虑使用Collections将集合包装成线程安全的集合。