1. ArrayList
基于数组方式实现,无容量的限制。
在执行插入元素时可能要扩容,在删除元素时并不会减少数组的容量。
如果希望相应的缩小数组容量,可以调用trimToSize()
在查找元素时要遍历数组,对于非null的元素采取equals的方式寻找。
非线程安全。
2. LinkedList
基于双向链表机制实现。
元素的插入、移动较快。
非线程安全。
3. Vector
基于Object数组的方式来实现的。
基于synchronized实现的线程安全的ArrayList。
在插入元素时容量扩充的机制和ArrayList稍有不同:
如果capcacityIncrement > 0, 则Object数组的大小扩大为现有size加上capcacityIncrement;
如果capcacityIncrement < 0, 则Object数组的大小扩大为现有size的两倍;
4. Stack
基于Vector实现,支持LIFO。
5. HashSet
基于HashMap实现,无容量限制。
不允许元素重复。
非线程安全。
6. TreeSet
基于TreeMap实现,支持排序。
非线程安全。
7. HashMap
采用数组方式存储key、value构成的Entry对象,无容量限制。
基于key hash寻找Entry对象存放到数组的位置,对于hash冲突采用链表的方式来解决。
在插入元素时可能会扩大数组的容量,在扩大容量时会重新计算hash,并复制对象到新的数组中。
非线程安全。
8. TreeMap
基于红黑树实现,无容量限制。
非线程安全。
-----------------------------------
适用场景:
对于查找和删除较为频繁,且元素数量较多的应用,Set或Map是更好的选择;
ArrayList适用于通过为位置来读取元素的场景;
LinkedList 适用于要头尾操作或插入指定位置的场景;
Vector 适用于要线程安全的ArrayList的场景;
Stack 适用于线程安全的LIFO场景;
HashSet 适用于对排序没有要求的非重复元素的存放;
TreeSet 适用于要排序的非重复元素的存放;
HashMap 适用于大部分key-value的存取场景;
TreeMap 适用于需排序存放的key-value场景。
分享到:
相关推荐
JAVA集合框架中的常用集合及其特点、适用场景、实现原理简介.docx
详细描述map、list、set的常用子类特性,各个场景的适用。
Android 学习笔记Java 基础基础类型Java 八大基本数据类型循环控制Java控制语句常见集合java常用集合类及其区别、源码分析(一)JAVA集合框架中的常用集合及其特点、适用场景、实现原理简介数据结构数组Java数组的...
第3版 机械工业出版社 教学内容和要求 知识点 重要程度 使用频度 难度 Java 入门 高 中 易 变量和运算符 高 高 中 控制结构 高 高 易 数组 高 高 中 方法 很高 高 中 封装 很高 很高 难...
常用的集合类有哪些?比如List如何排序? ArrayList和LinkedList内部的实现大致是怎样的?他们之间的区别和各自适应的场景是什么? 内存溢出是怎么回事? ClassLoader有什么用? ==和equals的区别? hashCode方法的...
25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................
Box2d同时也提供了各种语言环境的实现,由于Ophone平台使用java作为变成语言,所以我们将选择使用Box2d的java版JBox2d,这也将产生一个问题,JBox2D是用processing库来处理图像显示,所以Ophone平台上则不适用,在...
3.3.3 ArrayList和LinkedList的性能分析和适用场景 3.4 Iterator迭代器 迭代时删除指定元素 3.5 小结 第4课 Java的内存回收 4.1 Java引用的种类 4.1.1 对象在内存中状态 4.1.2 强引用 4.1.3 软引用 4.1.4 ...
图灵机器人提供API、SDK及前端组件[2] 用户可快速的选择适用的方式[2] ,为产品接入图灵机器人大脑[2] ,实现产品人工智能交互升级。[2] 图灵机器人平台具备灵活的多场景整体解决方案[2] ,满足各场景产品的多样化...
在典型的 IOC 场景中,容器创建了所有对象,并设置必要的属性将它们连接在一起,决定什么时间调用方法。下表列出了 IOC 的一个实现模式。 Spring 框架的 IOC 容器采用类型 2 和类型3 实现。 面向方面的编程 ...
18.2 在 C #代码中调用 C++和 VB 编写的组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间...
IVT:超过20/20表或集合数据文件 IVX:超过20/20微数据目录文件 IW:Idlewild屏幕保护程序 IWC:Install Watch文档 J J62:Ricoh照相机格式 JAR:Java档案文件(一种用于applet和相关文件的压缩文件) JAVA:...