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. elastalert docker安装

    基于对elasticsearch中数据监控需要,我尝试了sentinl和elastalert两款工具.虽然elastalert是纯文本,但易配置管理.elk自带的watch需要付费才可使用. 6.2x ...

  2. Java实现Redis的消息订阅和发布

    1.  首先需要一个消息监听器类 package com.sogou.baike.testimport.testSubscribe; import redis.clients.jedis.JedisP ...

  3. CSP复习与模板

    P3366 [模板]最小生成树 Kruskal 算法因为只与边相关,则适合求稀疏图的最小生成树.而 Prim 算法因为只与顶点有关,所以适合求稠密图的最小生成树. Prim 是以更新过的节点的连边找最 ...

  4. testlink 1.9.13之后版本,将动作默认显示

    最近升级了testlink,从低版本升级到1.9.14,而作为用户来说,改变了用户习惯,感觉不太好,其中有一个用户习惯是,点击某一条用例或测试集时,要点击动作才能显示实际的内容,如下: 每次都点击很不 ...

  5. Docker Hello-World镜像运行测试

    一.命令:docker run hello-world 命令解释:以docker客户端命令的方式运行hello-world镜像 命令运行结果: hadoop@Docker:/opt/docker$ d ...

  6. RabbitMQ消息幂等性问题

    文章目录 1. 什么是幂等性?1.1 消息队列的幂等性1.2 模拟重试机制1.2.1 生产者代码1.2.2 消费者代码1.2.3 消费者 application.yml 配置2. 如何保证消息幂等性, ...

  7. readfile,read,createReadStream函数

    这三个函数使用前都需要引入fs模块(var fs= require(“fs”) ) readfile:读取文件内容的异步函数,readFile方法是将要读取的文件内容完整读入缓存区,再从该缓存区中读取 ...

  8. 微信小程序之简单记账本开发记录(七)

    记账本已经可以实现添加和删除的功能 现在只需要将上述步骤重复一遍便可将另一个界面做出来. 大体上已制作完成,如果在细节上有变动会在这一篇更新 总体来说,这个作业让我对微信小程序的开发有了更多地认识,大 ...

  9. 使用CSS隐藏元素滚动条

    如何隐藏滚动条,同时仍然可以在任何元素上滚动? 首先,如果需要隐藏滚动条并在内容溢出时显示滚动条,只需要设置overflow:auto样式即可.想要完全隐藏滚动条只需设置overflow:hidden ...

  10. Java设计模式-Builder构造者模式

    介绍: 构造者模式,又称之为建造者模式,建造者模式,单例模式以及工厂模式都属于创建型模式1应用场景 今天学mybatis的时候,知道了SQLSessionFactory使用的是builder模式来生成 ...