`

Java常用集合包适用场景

阅读更多
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场景。




 
 
4
4
分享到:
评论

相关推荐

    JAVA集合框架中的常用集合及其特点、适用场景、实现原理简介.docx

    JAVA集合框架中的常用集合及其特点、适用场景、实现原理简介.docx

    JAVA集合map、list、set详解

    详细描述map、list、set的常用子类特性,各个场景的适用。

    android-note

    Android 学习笔记Java 基础基础类型Java 八大基本数据类型循环控制Java控制语句常见集合java常用集合类及其区别、源码分析(一)JAVA集合框架中的常用集合及其特点、适用场景、实现原理简介数据结构数组Java数组的...

    AIC的Java课程1-6章

    第3版 机械工业出版社  教学内容和要求 知识点 重要程度 使用频度 难度 Java 入门 高 中 易 变量和运算符 高 高 中 控制结构 高 高 易 数组 高 高 中 方法 很高 高 中 封装 很高 很高 难...

    开源bbs源码java-interview-note:面试题总结

    常用的集合类有哪些?比如List如何排序? ArrayList和LinkedList内部的实现大致是怎样的?他们之间的区别和各自适应的场景是什么? 内存溢出是怎么回事? ClassLoader有什么用? ==和equals的区别? hashCode方法的...

    JAVA核心知识点整理(有效)

    25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................

    OPhone平台2D游戏引擎实现——物理引擎

    Box2d同时也提供了各种语言环境的实现,由于Ophone平台使用java作为变成语言,所以我们将选择使用Box2d的java版JBox2d,这也将产生一个问题,JBox2D是用processing库来处理图像显示,所以Ophone平台上则不适用,在...

    突破程序员基本功的16课.part2

    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 ...

    GoodProject Maven Webapp.zip

    图灵机器人提供API、SDK及前端组件[2] 用户可快速的选择适用的方式[2] ,为产品接入图灵机器人大脑[2] ,实现产品人工智能交互升级。[2] 图灵机器人平台具备灵活的多场景整体解决方案[2] ,满足各场景产品的多样化...

    Spring面试题

    在典型的 IOC 场景中,容器创建了所有对象,并设置必要的属性将它们连接在一起,决定什么时间调用方法。下表列出了 IOC 的一个实现模式。 Spring 框架的 IOC 容器采用类型 2 和类型3 实现。 面向方面的编程 ...

    C#微软培训资料

    18.2 在 C #代码中调用 C++和 VB 编写的组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间...

    网管教程 从入门到精通软件篇.txt

    IVT:超过20/20表或集合数据文件 IVX:超过20/20微数据目录文件 IW:Idlewild屏幕保护程序 IWC:Install Watch文档 J J62:Ricoh照相机格式 JAR:Java档案文件(一种用于applet和相关文件的压缩文件) JAVA:...

Global site tag (gtag.js) - Google Analytics