Vector,ArrayList,LinkedList均为线性的数据结构,但是从现实方式与应用场景中又存在差别.

1 底层实现方式

ArrayList内部数组来实现,LinkedList内部采用双向链表表现,,Vector内部用数组实现.

2 读写机制

ArrayList在执行插入元素超过当前数组预定义的最大值时,数组需要扩容,扩容需要调用底层System.arraycopy()方法进行大量的数组复制操作,在删除元素时并不会减少数组容量,可以调用trimToSize()方法缩小数组容量,在查找元素时要遍历数组,对于非null的元素采用equals的方式寻找.

LinkedList在插入元素时,需创建一个新的Entry对象,并更新相应元素前后元素的索引,在查找元素时,需遍历链表,在删除元素时,需遍历链表,找到要删除的元素,然后将此元素删除即可.

Vector与ArrayList仅在插入元素时的容量扩充机制不一样,对于Vector,默认创建一个大小为10的Object数组,当capacitylncrement大于0扩容为:size+capacitylncrement..当capacitylncrement等于0扩容为:size*2.

3 读写速率

ArrayList对元素的增加和删除都会引起数组的内存分配空间动态发生变化,因此对其进行插入和删除较慢,但索引速度较快.LinkdeList由于基于链表方式存放数据,增加和删除元素的速度较快,但索引速度较慢.

LinkedList由于基于链表方式存放数据,增加和删除元素的数度比较快,但索引速度较慢.

4.线程安全

ArrayList,LinkedList为非线程安全,Vector是基于synchronized实现的线程安全的ArrayList.

java面试题(杨晓峰)---第八讲谈谈Vector,ArrayList,LinkedList有何区别?的更多相关文章

  1. java面试题(杨晓峰)---第七讲谈谈int和integer有什么区别?

    理解装箱和拆箱的过程. 对象由三部分组成:对象头,对象实例,对齐填充. 对象头:一般是十六个字节,分两部分,第一部分:哈希码,锁状态标志,线程持有的锁,偏向线程id,gc分代年龄等,第二部分是类型指针 ...

  2. java面试题(杨晓峰)---第六讲谈谈动态代理是基于什么原理?

    我在编译时不知道,而在运行时知道,那么肯定在运行时给了提示,这个提示就是额外功.好处是可以重复利用相同代码. 代理模式:通过代理静默的解决一些与业务无关的问题,例如远程,安全,事物,日志,资源关闭,. ...

  3. java面试题(杨晓峰)---第四讲强引用、软引用、弱引用、幻想引用有什么区别?

    在java语言中,除了原始数据类型的变量,其他所有都是所谓的引用类型,指向各种不同的对象,理解引用对于掌握java对象生命周期和JVM内部相关机制非常有帮助. 今天问题:强引用.软引用.弱引用.幻想引 ...

  4. java面试题(杨晓峰)---以面试题为切入点,有效提升你的java内功

    java是一门历史悠久的编程语言,可以毫无争议的说,java是最主流的编程语言之一.全球有1200万以上的java程序猿以及海量的设备,还有无所不能的java生态圈. 我所知道的诸如阿里,京东,百度, ...

  5. java面试题(杨晓峰)---第二讲Exception和Error有什么区别?

    本人总结: Exception和Error:正常问题和意外问题,以自行车举例:没气和爆胎. ①理解Throwable,Exception,Error的设计和分类. ②掌握哪些应用最广泛的子类, ③如何 ...

  6. java面试题(杨晓峰)---第一讲谈谈你对java平台的理解

    本人总结: 面向对象(封装,继承,多态) 平台无关性(jvm运行,class文件) 语言(泛型,lambda) 类库(集合,并发,网络,io/nio) jre(java运行环境,JVM,类库) JDK ...

  7. java面试题(杨晓峰)---第五讲String、StringBuffer、StringBuilder有什么区别?

    线程 字符 操作频繁度 1 String (1)String的创建机制 由于String在java世界中使用过于频繁,java为了避免在一个系统中产生大量重复的String对象,引入了字符串常量池,其 ...

  8. java面试题(杨晓峰)---第三讲谈谈final、finally、finalize有什么不同?

    java语言有很多看起来相似,但用途却完全不相同的语言要素,这些内容往往容易成为面试官考察你知识掌握程度的切入点. 今天我要问你一个基础的java经典题目,谈谈final.finally.finali ...

  9. 大公司的Java面试题集

    找工作要面试,有面试就有对付面试的办法.以下一些题目来自我和我朋友痛苦的面试经历,提这些问题的公司包括IBM, E*Trade, Siebel, Motorola, SUN, 以及其它大小公司. 面试 ...

随机推荐

  1. 《Java多线程编程核心技术》读后感(七)

    volatile关键字 主要作用是使变量在多个线程间可见. 关键字volatile与死循环 package Second; public class PrintString { private boo ...

  2. iframe父页面和子页面相互调用的方法

    随着W3C一声令下,几年前使用非常频繁的frameset + frame已完成使命,光荣退伍.作为frameset的替代方案(姑且这么称吧),iframe的使用也多了起来.较frameset方案,if ...

  3. IE浏览器弹出窗口

    //弹出一个对话框 参数的顺序: url, iWidth, iHeight, vArguments function openDialog() { var url, len = arguments.l ...

  4. Unity3d 5.3.5使用sqlite3

    http://blog.csdn.net/glunoy/article/details/52037598 国内讲的乱七八糟,更有故作神秘提供Mono.Data.Sqlite.dll System.Da ...

  5. 剑指Offer的学习笔记(C#篇)-- 矩形覆盖

    题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 一 . 解题思路 这个貌似就是普通的跳台阶问题. 二 . 代 ...

  6. JS高级学习历程-10

    [面向对象] 面向对象的三大特性:封装.继承.多态 封装:在“类”里边有关键字public.protected.private 对成员进行声明,这样每个成员的访问都会受到不同关键字的限制. 继承:在p ...

  7. vue中的导航守卫

    官方文档地址: 导航守卫:https://router.vuejs.org/zh-cn/advanced/navigation-guards.html 好的,重点内容 router.beforeEac ...

  8. 13.组合查询--SQL

    利用UNION操作符将多条SELECT语句组合成一个结果集. 主要有两种情况需要使用组合查询: 在一个查询中从不同的表返回结构数据: 对一个表执行多个查询,按一个查询返回数据. UNION规则 UNI ...

  9. VS 小插件 之 编辑器背景图片

    一.引言 不知道标题的名字我描述的是否正确哈,其实就是用VS写代码的时候,背景一般都是纯白 或者 纯黑(看主题而定),那么我前段时间发现 只需要一个VS插件,居然可以给VS设置背景图片,甚至还可以循环 ...

  10. POJ-3352-RoadConstruction(边双联通分量,缩点)

    链接:https://vjudge.net/problem/POJ-3352#author=0 题意: 给一个无向连通图,至少添加几条边使得去掉图中任意一条边不改变图的连通性(即使得它变为边双连通图) ...