ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的

数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉

及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector 中的方法由

于添加了 synchronized 修饰,因此 Vector 是线程安全的容器,但性能上较

ArrayList 差,因此已经是 Java 中的遗留容器。LinkedList 使用双向链表实现存

储(将内存中零散的内存单元通过附加的引用关联起来,形成一个可以按序号索

引的线性结构,这种链式存储方式与数组的连续存储方式相比,内存的利用率更

高),按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本

项的前后项即可,所以插入速度较快。Vector 属于遗留容器(Java 早期的版本中

提供的容器,除此之外,Hashtable、Dictionary、BitSet、Stack、Properties

都是遗留容器),已经不推荐使用,但是由于 ArrayList 和 LinkedListed 都是非

线程安全的,如果遇到多个线程操作同一个容器的场景,则可以通过工具类

Collections 中的 synchronizedList 方法将其转换成线程安全的容器后再使用(这

是对装潢模式的应用,将已有对象传入另一个类的构造器中创建新的对象来增强

实现)。

补充:遗留容器中的 Properties 类和 Stack 类在设计上有严重的问题,Properties

是一个键和值都是字符串的特殊的键值对映射,在设计上应该是关联一个

Hashtable 并将其两个泛型参数设置为 String 类型,但是 Java API 中的

Properties 直接继承了 Hashtable,这很明显是对继承的滥用。这里复用代码的

方式应该是 Has-A 关系而不是 Is-A 关系,另一方面容器都属于工具类,继承工具

类本身就是一个错误的做法,使用工具类最好的方式是 Has-A 关系(关联)或

Use-A 关系(依赖)。同理,Stack 类继承 Vector 也是不正确的。Sun 公司的工

程师们也会犯这种低级错误,让人唏嘘不已。

阐述 ArrayList、Vector、LinkedList 的存储性能和特性?的更多相关文章

  1. 请说出ArrayList,Vector, LinkedList的存储性能和特性

    请说出ArrayList,Vector, LinkedList的存储性能和特性 解答:ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都 ...

  2. 说出ArrayList,Vector, LinkedList的存储性能和特性

     ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插 ...

  3. 【Java面试题】37 说出ArrayList,Vector, LinkedList的存储性能和特性

    ArrayList和Vector都是使用数组方式存储数据,此 数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插 ...

  4. ArrayList,Vector, LinkedList的存储性能和特性

    ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入 ...

  5. ArrayList,Vector, LinkedList 的存储性能和特性

    ArrayList 和Vector他们底层的实现都是一样的,都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内 ...

  6. ArrayList,Vector, LinkedList的存储性能和特性?

    ArrayList,Vector, LinkedList的存储性能和特性? ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入或删除时非常麻烦. ...

  7. 一道关于:ArrayList、Vector、LinkedList的存储性能和特性 的面试题

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

  8. 阐述ArrayList、Vector、LinkedList的存储性能和特性。

    答:ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快 ...

  9. 阐述ArrayList、Vector、LinkedList的存储性能和特性?(转)

    ArrayList 和Vector他们底层的实现都是一样的,都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内 ...

  10. 阐述ArrayList、Vector、LinkedList的存储性能和特性?

    ArrayList 和Vector他们底层的实现都是一样的,都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内 ...

随机推荐

  1. 数据分析工具那么多,掌握Smartbi这一个就够了!

    经常听见有人问,数据分析用什么工具好? 被大家熟知的数据分析工具有很多,比如Excel.BI.R.Python--具体选择哪个这要看个人的需求,如果非要说哪个好,其中BI工具小编觉得"老少皆 ...

  2. 企业环境下如何把ubuntu的dhcp改为静态IP

    静态ip不能连接外网 因为老的虚拟机有ubuntu桌面 以及一些磁盘的问题, 想 迁移 自己的虚拟机,连带着把ip也迁移,(公司有些界面是 通过我的虚拟机ip访问的.) 编辑 root@ubuntu: ...

  3. Oracle数据库常用命令整理

    转至:https://blog.csdn.net/creativemobile/article/details/8982164 1监听 (1)启动监听 lsnrctl start (2)停止监听  l ...

  4. Android studio常用快捷键导包的设置

    下面是一些快捷键的使用还有快速导包的设置 1. Ctrl+G 同时按下Ctrl+G快捷键弹出快速定位框,在框中输入行数点击OK即可快速切换到对应的行数,如图2.17所示. 2. Ctrl+E 同时按下 ...

  5. 修改Ehcache缓存中取到的值,缓存中的值也被修改了

    问题现象 我们从Ehcache中取出缓存的对象,之后将对象中的属性进行了修改使用.等再次从缓存中拿到对象后,发现对象的值变成了上一次调用修改后的对象了. 原因 Ehcache中缓存的是原对象的引用,所 ...

  6. python刷剑指offer(21-40)(一刷)

    21.输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序 ...

  7. docker学习笔记(2)- 仓库

    Docker仓库是镜像存储.分发.部署的关键,制作好应用程序镜像后上传到仓库,使用Docker daemon从仓库拉取后运行,我们可以使用官方共有仓库docker hub或者搭建私有仓库 Docker ...

  8. 【转载】SQL复杂实例

    from:http://blog.csdn.net/basycia/article/details/52134320       OR       from:http://www.wzsky.NET/ ...

  9. tp6 验证方式

    think验证方式

  10. 专业5 laravel框架添加,删除,恢复,分页,搜索接口

    //////////////////////资源路由 //商品资源路由恢复Route::get('/restore/{id}','goodController@restore');//商品资源路由添加 ...