zoukankan      html  css  js  c++  java
  • Java常用集合-List(ArrayList、Vector和LinkedList)简介

    Java中的List是一个常用的数据类型,其一共有三个实现类:
    ArrayList、Vector和LinkedList

    一、ArrayList
    1、ArrayList是最长用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就是将已经有数组的数据复制到新的存储空间中。当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制和移动,代价比较高。因此它适合随机查找和遍历,不适合插入和删除。

    2、ArrayList的底层是数组队列,相当于动态数组。与Java中的数组对比,它的容量能动态增长,在添加大量元素前,应用程序可以使用'ensureCapacity'操作来增加ArrayList实例的容量,这可以减少递增式再分配的数量。

    3、ArrayList默认容量是10,如果初始化一开始指定了容量,或者通过集合作为元素,则容量为指定的大小或参数集合的大小。每次扩容为原来的1.5倍,如果新增后超过这个容量,则容量为新增后所需的最小容量。

    二、Vector
    Vector与ArrayList一样,也是通过数组实现的,不同的是它支持线程的同步,即某一时刻只有一个线程能够写Vector,避免多线程同事写而引起的不一致性,但实现同步需要很高的花费,因此,访问它比访问ArrayList慢。

    三、LinkedList
    LinkedList使用链表结构存储数据的,很适合数据的动态插入和删除,随机访问和遍历速度比较慢。


    三者比较
    相同点:元素排列有序,可重复

    不同点:

    1、ArrayList和Vector的底层使用数组查询速度快,增删慢;LinkedList底层使用双向循环链表结构,查询慢增删快

    2、ArrayList和LinkedList线程不安全;Vector线程安全,但是效率低

  • 相关阅读:
    Apache ServiceComb Pack 微服务分布式数据最终一致性解决方案
    EF core 性能调优
    Entity Framework Core Query Types
    Using the Repository and Unit Of Work Pattern in .net core
    CENTOS 7 下安装 REDIS 5.0.6 完整步骤
    MySQL InnoDB 群集–在Windows上设置InnoDB群集
    RFM客户价值分类
    修改meta标签
    $.Deferred 使用 (支持jQuery1.5版本以上)
    error: Unexpected console statement (no-console) 解决办法
  • 原文地址:https://www.cnblogs.com/lifefamily/p/14284344.html
Copyright © 2011-2022 走看看