美文网首页
ArrayList、Vector、LinkedList

ArrayList、Vector、LinkedList

作者: HRADPX | 来源:发表于2019-07-26 18:32 被阅读0次

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集合。

相关文章

网友评论

      本文标题:ArrayList、Vector、LinkedList

      本文链接:https://www.haomeiwen.com/subject/xpjzlctx.html