ArrayList、Vector、LinkedList

1 ArrayList和Vector的异同

相同点:

  (1) 两者底层都是基于数组实现的,查询效率高,删除和插入效率低。
  (2) 两者都实现了List接口,都是有序集合。
  (3) 两者的迭代器实现都是fast-fail。

不同点:

  (1) ArrayList是线程不安全的,效率高。Vector大部分方法都使用了synchronized关键字修改,是线程安全的,效率低。
  (2) ArrayList扩容时扩大为原来的1.5倍,Vector扩容时如果初始化了capacityIncrement属性时,每次扩容大小就增加capacityIncrement,如果没有就默认扩容到原来的2倍。

2 ArrayList,Vector, LinkedList 的存储性能和特性。

ArrayList

  ArrayList实现List接口,内部使用的是数据结构是数组,默认初始大小10。有序集合,增删效率低,查询效率高,线程不安全。

Vector

  Vector实现List接口,内部使用的是数据结构是数组,默认初始大小10。有有序集合,大多方法都使用synchronized关键字修饰,线程安全,但是效率低。

LinkedList

  LinkedList实现了List接口,内部使用的数据结构是双向链表。有序集合,增删效率高,查询效率低,线程不安全。

3 List、Set、Map三个接口,存取元素时,各有什么特点

  List和Set都是单列集合,都实现了Collection接口,而Map是双列集合。
  List是有序集合,存储顺序和遍历的顺序一致,Set和Map是无序集合,不能保证存取顺序一致。
  存储

(1) List可以允许重复元素。
(2) Set不允许有重复元素。
(3) Map不允许有重复的key,但可以有重复的value。

  取/遍历

(1) List有三种遍历方式:增强for循环、迭代器、以及get(int index)索引随机访问。
(2) Set集合遍历有迭代器迭代和增强for循环
(3) Map集合可以使用键获取值get(E key),可以获取key的集合,或获取value的集合,或者获取由key和value组合的Entry集合。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容