zoukankan      html  css  js  c++  java
  • 面试题:ArrayList、LinkedList、Vector三者的异同?

    面试题:ArrayList、LinkedList、Vector三者的异同?
    同:三个类都是实现了List接口(Collection的子接口之一),存储数据的特点相同:存储有序的、可重复的数据

    不同:
    *|----ArrayList:作为List接口的主要实现类;线程不安全的,效率高;底层使用Object[] elementData存储
    *|----LinkedList:对于频繁的插入、删除操作,使用此类效率比ArrayList高;底层使用【双向链表】存储
    *|----Vector:作为List接口的古老实现类;线程安全的,效率低;底层使用Object[] elementData存储

    双向链表增删的示意图:

    面试题:
    请问ArrayList/LinkedList/Vector的异同?谈谈你的理解?ArrayList底层
    是什么?扩容机制?Vector和ArrayList的最大区别?
     ArrayList和LinkedList的异同
    二者都线程不安全,相对线程安全的Vector,执行效率高。
    此外,ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。对于
    随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。对于新增
    和删除操作add(特指插入)和remove,LinkedList比较占优势,因为ArrayList要移动数据。
     ArrayList和Vector的区别
    Vector和ArrayList几乎是完全相同的,唯一的区别在于Vector是同步类(synchronized),属于
    强同步类。因此开销就比ArrayList要大,访问要慢。正常情况下,大多数的Java程序员使用
    ArrayList而不是Vector,因为同步完全可以由程序员自己来控制。Vector每次扩容请求其大
    小的2倍空间,而ArrayList是1.5倍。Vector还有一个子类Stack。

    不积跬步,无以至千里;不积小流,无以成江海。
  • 相关阅读:
    最短路径算法
    XMLhelper
    关于NuDaqPci 数据采集
    批处理常用命令及用法大全
    c#智能感知(设置)及实现
    单片机串行通信全解析
    Esp8266
    使用NOOBS给树莓派安装系统Raspbian
    命令提示符编译java
    javaWeb使用POI操作Excel
  • 原文地址:https://www.cnblogs.com/CCTVCHCH/p/14777983.html
Copyright © 2011-2022 走看看