• 牛客网Java刷题知识点之ArrayList 、LinkedList 、Vector 的底层实现和区别


      不多说,直接上干货!

      这篇我是从整体出发去写的。

    牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合

    List集合中子类 Vector、ArrayList、LinkedList

      List:有序, 可重复, 有索引。三者均为可伸缩数组
      Vector:底层数据结构是数组结构。 jdk1.0版本。 线程安全的。 无论增删还是查询都非常慢。默认扩充为原来的2倍。
      ArrayList:底层数据结构是数组结构。 线程不安全的。 所以ArrayList的出现替代了Vector, 但是查询的速度很快。默认扩充为原来的1.5倍。
      LinkedList:底层是链表数据结构。 线程不安全的, 同时对元素的增删操作效率很高。但查询慢
      注意: 链表结构是这样的: 让后一个元素记住前一个元素的地址。  

       Vector 和  ArrayList都是基于存储元素的Object[ ] array来实现的。

       LinkedList是采用双向列表来实现的。

      1、 线程同步,Vector线程安全,ArrayList线程不安全。

      2、 效率问题,Vector效率低,ArrayList效率高。

      3、 增长数量,Vector以1.5倍增长,ArrayList以2倍增长。

     LinkdedList,增删改查很快:

    LinkedList的查询速率比较慢:

      

        List集合子类Vector这个类已经不常用了, 我就说里面的一个方法, Elements方法, 这个方法的返回值是枚举接口, 里面有两个方法, 判断和获取。此接口Enumeration的功能与 Iterator 接口的功能是重复的。Enumeration的名称和方法的名称过程, 书写很麻烦。 所以被Iterator所取代。

    ArrayList 、 LinkedList 、 Vector 的底层实现和区别:

      ArrayList是实现了基于动态数组的数据结构,LinkedList基于双线链表的数据结构。

      ArrayList可以随机定位对于新增和删除操作add和remove,LinedList比较占优势

      具有Collection接口必备的iterator()方法外,List还提供一个listIterator()方法ListIterator多了一些add()之类的方法,允许添加,删除,设定元素,还能向前或向后遍历。

      Vector与ArrayList唯一的区别是,Vector是线程安全的,即它的大部分方法都包含有关键字synchronized,因此,若对于单一线程的应用来说,最好使用ArrayList代替Vector,因为这样效率会快很多(类似的情况有StringBuffer线程安全的与StringBuilder线程不安全的);而在多线程程序中,为了保证数据的同步和一致性,可以使用Vector代替ArrayList实现同样的功能。

  • 相关阅读:
    消息传递协议
    TSL 访问器
    graph engine
    uwp 动画Storyboard
    iOS播放视频时候,忽略设备静音按钮
    Could not find Developer Disk Image
    GIT常用命令
    iOS 音频播放时听筒及扬声器切换
    iOS 9:ATS
    iOS设计模式
  • 原文地址:https://www.cnblogs.com/zlslch/p/7634403.html
Copyright © 2020-2023  润新知