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. 微信小程序实现文本的展开与收起

    致谢 https://www.jianshu.com/p/9458083214cc 效果图   代码 js部分 // pages/volunteer/active/info/activeInfo.js ...

  2. windev的Trigger触发器,能秒SQL吗?

    有朋友问,"你是不是在写论文?" (此处请想象个表情)"好吧,论文继续!" SQL中,触发器可以看成是一种特殊的存储过程,使用inserted临时表来建立数据关 ...

  3. 字符串压缩(一)之ZSTD

    前言 最近项目上有大量的字符串数据需要存储到内存,并且需要储存至一定时间,于是自然而然的想到了使用字符串压缩算法对"源串"进行压缩存储.由此触发了对一些优秀压缩算法的调研. 字符串 ...

  4. 【C#集合】Hashtable 和 Dictionary的区别

    Hashtable 和 Dictionary <K, V> 类型 1):单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分. 2):Diction ...

  5. IDisposable?释放非托管资源接口

    原文:https://www.cnblogs.com/luminji/archive/2011/03/29/1997812.html IDisposable高级篇:https://docs.micro ...

  6. @vue/cli的配置知道多少-publicPath,outputDir,assetsDir,indexPath,filenameHashing,configureWebpack,productionSourceMap

    vue.config.js的简单介绍 vue.config.js 是一个可选的配置文件, 在项目的 (和 package.json 同级的) 根目录中存在这个文件. 默认情况没有这个文件需要我们手动去 ...

  7. WPS:为什么无法页眉页脚同前节(同前节是灰的)

    问题:,同前节是灰的 原因:全文只有一节,插入分节符就可以设置同前节了

  8. Pycharm:调试、断点

    1.调试:Shift+F10 或 2.快捷键: 步进:F8 进入函数内:F7 运行到下一个断点处:F9 3.删除所有断点 菜单栏->Run->View BreakPoints.. 减号代表 ...

  9. vue--加载模块详解

    1.postcss-loader.autoprefixer.css-loader .sass-loader:加载css模块及css预处理模块,添加浏览器前缀到CSS内容里 加载模块:npm insta ...

  10. 05tensorflow分布式会话

    一. tensorflow分布式 1.     概念 分布式Tensorflow是由高性能的gRPC框架作为底层技术来支持的.这是一个通信框架gRPC(google remote procedure ...