LinkedList、ArrayList、Vector三者的关系与区别?

区分ArrayList,Vector,LinkedList的区别
ArrayList,Vector的区别:
1.出现版本:
ArrayList(1.2),Vector(1.0),Collection(1.2),也就是说Vector出现的更早(老版本的动态数组,与HashTable一样在jdk1.0)
Vector:elementData,当执行构造方法时候初始化大小为10
ArrayList:调用无参构造(elementData),初始化大小为空

2.初始化策略区别:
Vector在调用无参构造执行后将对象数组初始化为10
ArrayList采用懒加载策略,在构造方法阶段并不初始化对象数组,在第一次添加元素的时候才初始化对象数组(add方法)

3.扩容策略:
ArrayList扩容的时候,新数组大小变为原数组大小的1.5倍
Vector扩容的时候,新数组大小变为原数组的2倍

4.线程安全性:
ArrayList采用异步处理,线程不安全,效率较高
Vector采用在方法上加锁,线程安全,效率较高(即便要使用线程安全的List,也不要用Vector)

5.遍历:
Vector支持较老的迭代器Enumeration
ArrayList不支持

ArrayList,Vector的共同点;
底层均使用数组实现

ArrayList,LinkedList:
LinkedList底层采用双向链表实现,所以不存在扩容,初始化问题,并且add方法没有加锁,所以它和ArrayList一样同为异步实现
ArrayList底层采用数组实现

a、LinkedList、ArrayList、Vector都是List接口的字类,其中LinkedList基于双向链表实现,ArrayList和Vector基于数组实现

b、ArrayList采用懒加载模式,在第一次添加元素的时候,初始化内部数组,初始大小为10,扩容大侠为原先为1.5倍,采用异步处理,线程不安全,性能较高,在80%的场景下应用

c、Vector在产生对象时候初始化大小为10的内部数组、扩容为原先的2倍,采用synchronized修饰常用的增删查改方法,线程安全,性能较低(读读互斥)

Stack是Vector的子类

d、常见的插入删除在尾部ArrayList比较快,在指定位置的时候,LinkedList比较快,在任意位置的插入与删除会考虑使用LinkedList(因为LInkedList是链表,指定位置快,而ArrayList需要将插入元素以后的元素整体向后挪动)

额外备注:

LinkedList实现Deque接口,Deque接口继承Queue,所以,LinkedList也实现了Queue接口

ArrayList继承AbastactList

Arrays.copyOf() , Arrays.sort() , Arrays.aslist

LinkedList、ArrayList、Vector三者的关系与区别?的更多相关文章

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

    不多说,直接上干货! 这篇我是从整体出发去写的. 牛客网Java刷题知识点之Java 集合框架的构成.集合框架中的迭代器Iterator.集合框架中的集合接口Collection(List和Set). ...

  2. 面试题:ArrayList、LinkedList、Vector三者的异同?

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

  3. Java集合系列(二):ArrayList、LinkedList、Vector的使用方法及区别

    本篇博客主要讲解List接口的三个实现类ArrayList.LinkedList.Vector的使用方法以及三者之间的区别. 1. ArrayList使用 ArrayList是List接口最常用的实现 ...

  4. LinkedList,ArrayList,Vector,HashMap,HashSet,HashTable之间的区别与联系

    在编写java程序中,我们最常用的除了八种基本数据类型,String对象外还有一个集合类,在我们的的程序中到处充斥着集合类的身影!java中集合大家族的成员实在是太丰富了,有常用的ArrayList. ...

  5. ArrayList,LinkedList,Vector,Stack之间的区别

    一,线程安全性 Vector.Stack:线程安全 ArrayList.LinkedList:非线程安全 二,实现方式 LinkedList:双向链表 ArrayList,Vector,Stack:数 ...

  6. Java _ JDK _ Arrays, LinkedList, ArrayList, Vector 及Stack

    (最近在看JDK源码,只是拿着它的继承图在看,但很多东西不记录仍然印象不深,所以开始记录JDK阅读系列.) (一)Arrays Arrays比较特殊,直接继承自Arrays ->List(Int ...

  7. Arraylist Vector Linkedlist区别和用法 (转)

    ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以索引数据快插入数据慢 ...

  8. ArrayList Vector LinkedList 区别与用法

    转载自: http://www.cnblogs.com/mgod/archive/2007/08/05/844011.html 最近用到了,所以依然是转载 ArrayList 和Vector是采用数组 ...

  9. ArrayList、LinkedList、Vector的区别

    Arraylist和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加插入元素,都允许直接序号索引元素,但是插入数据要涉及到数组元素移动等内存操作,所以插入数据慢,查找有下标, ...

随机推荐

  1. Shell 编程 编辑工具 awk

    本篇主要写一些shell脚本编辑工具awk的使用. 概述 awk是一个功能强大的编辑工具,逐行读取输入文本,并根据指定的匹配模式进行查找,对符合条件的内容进行格式化输出或者过滤处理. awk倾向于将一 ...

  2. HAProxy的调度算法

      HAProxy通过固定参数balance指明对后端服务器的调度算法,该参数可以配置在listen或backend选项中.   HAProxy的调度算法分为静态和动态调度算法,但是有些算法可以根据参 ...

  3. TCP 通信时序及状态变迁

    TCP 通信时序及状态变迁 参考链接: https://www.cnblogs.com/boxker/p/11214886.html https://blog.csdn.net/miss_ruoche ...

  4. python安装第三方库--换镜像源

    python安装第三方库--换镜像源 1. 更换anaconda源 清华大学镜像:清华大学镜像 anaconda下载地址:https://mirrors.tuna.tsinghua.edu.cn/an ...

  5. vue2.0 实现导航守卫(路由守卫)---登录验证

    路由跳转前做一些验证,比如登录验证,是网站中的普遍需求. 对此,vue-route 提供的 beforeRouteUpdate 可以方便地实现导航守卫(navigation-guards). 导航守卫 ...

  6. Redash - 安装和初试

    前言 当业务成长到一定规模之后,会有许多想看各种不同类型报表的需求,如果单独做在后台,那么无疑会浪费前端和后端开发的时间.所以一直都有在寻找一款好用的BI工具.后面查了一下,市面上好用的一些非商业的B ...

  7. springboot2.0整合logback日志(详细)

    <div class="post"> <h1 class="postTitle"> springboot2.0整合logback日志(详 ...

  8. 使用面向对象思想封装js(附实例)

    平时在写js时应该用面向对象思想将每一组功能封装成一个模块,可实现模块间的高内聚低耦合.重用.结构清晰........... 如果页面中逻辑复杂.功能多,不使用模块封装是不可想象的,维护起来非常复杂. ...

  9. ESA2GJK1DH1K升级篇: 升级STM32 预热: 单片机定时 使用 http 获取云端文本文件里面的内容,然后显示在液晶屏

    前言: 实现功能概要 STM32使用AT指令控制Wi-Fi以TCP方式连接咱上节安装的Web服务器,然后使用http的get协议获取云端文本文件里面的内容, 然后把获取的数据显示在OLED液晶屏.   ...

  10. ajax有哪些方法可以实现跨域?他们都有哪些局限性?

    1.服务器端代理:在服务器端设置一个代理,由服务器端向跨域下的网站发出请求,再将请求结果返回给前端. 属于后端的技术,实现起来最麻烦. 2.jsonP,只支持get方式调用. 3.XHR2(cors) ...