美文网首页
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