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. 十八、Python面向对象之魔术方法

    1.类的比较 class A(object): def __init__(self,value): self.value = value def __eq__(self,other): return ...

  2. JavaScript中数组去重汇总

    1. 简单的去重方法,利用数组的indexOf下标属性来查询 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ func ...

  3. java 深copy

    public static<T> T deepClone(T src) throws IOException, ClassNotFoundException { Object obj = ...

  4. PAT 乙级 1036.跟奥巴马一起编程 C++/Java

    题目来源 美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统.2014 年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏 ...

  5. 转:宏定义的极致发挥---让你的普通C++类轻松支持IDispatch自动化接口(二)

    Posted on 2011-01-13 20:44 一桶浆糊 这是上一篇博客<宏定义的极致发挥---让你的普通C++类轻松支持IDispatch自动化接口>所展示的示例代码的改进版,改进 ...

  6. python笔试题

    冒泡排序的原理:每次对相邻的两个元素进行比较,若前者大于后者,这将两者的位置交换.第一轮就可以将最大的元素置于列表的最后.几轮循环 冒泡排序的前提条件:有序的列表 import unittest# 冒 ...

  7. IE、chrome驱动下载地址

    http://selenium-release.storage.googleapis.com/index.html IE驱动https://sites.google.com/a/chromium.or ...

  8. 【java】ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

    如果是负载均衡,则 jdbc.url=jdbc:oracle:thin:@(description=(address_list= (address=(host=XX.XXX.X.XX) (protoc ...

  9. Linux 安装Docker compose 快速方法

    https://blog.csdn.net/ysk_xh_521/article/details/80443509 安装pipyum -y install epel-releaseyum -y ins ...

  10. monkey--介绍

    前戏 monkey程序是android系统自带的,其启动脚本是位于android系统的/system/bin目录的monkey文件,其jar包是位于android系统的/system/framewor ...