ArrayList,LinkedList,Vector

本文介绍了ArrayList,LinkedList和Vector的区别与特点。ArrayList基于动态数组,适合随机访问,但插入删除效率较低。LinkedList采用链表结构,适合插入删除操作,但随机访问性能较差。Vector与ArrayList类似,但线程安全,性能较ArrayList慢。Set接口存储无序不重复数据,插入删除高效,而List接口存储有序可重复元素,查找效率高。
摘要由CSDN通过智能技术生成

   

      一:概念介绍 

       List接口的实现类有3个:ArrayList(常用) ,LinkedList,Vector。

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

      LinkedList:它也是List实现类,内部是用链表结构存储数据的,故避免了数组需要一块连续存储空间的缺点。LinkedList优点:很适合元素的动态插入和删除;缺点:对于元素的随机访问和遍历速度比较慢。另外LinkedList还提供了List接口中没有定义的方法,专门用于操作表头和表尾元素,可以当做堆栈、队列和双向队列使用。

      Vector:和ArrayList类似,内部也是通过数组实现的,不同的是它支持线程的同步,即某一时刻只有一个线程能够写Vector,避免多线程同时写而引起的不一致性,但是同步需要很高的花费,因此,Vector访问元素的速度要比ArrayList慢。

     二:性能比较

       ArrayList和LinkedList的区别:

      1: ArrayList实现了基于动态数组的数据结构,LinkedList实现了基于链表的数据结构。

      2: 对于随机访问set和get,ArrayList性能要优于LinkedList,因为LinkedList是链表,而ArrayList是动态数组。时间复杂度LinkedList要远远大于ArrayList。特殊情况:对于访问开头元素,ArrayList和LinkedList性能一样。

      3: 对于增加add和删除remove,LinkedList性能要优于ArrayList,因为ArrayList是动态数组,删除和增加元素要移动数组内相关的元素,而LinkedList则不需要。LinkedList删除和增加任意位置的元素,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值