最顶端是两个接口,集合和映射——  Collection<T>  /  Map<K, V>

List 列表        保持插入顺序

  ArrayList      擅长随机读

  LinkedList       增、删

  Arrays$ArrayList    定长List,功能有限

Set 集

  HashSet      查找最快

  TreeSet       升序排序

  LinkedHashSet   保持插入顺序

Queue 队列

  LinkedList     也实现了Queue接口,

  PriorityQueue    保持插入顺序

Map 映射

  HashMap     散列映射,速度最快

  LinkedHashMap  保持插入顺序

  WeakHashMap   键不再使用时,值回报GC

  TreeMap      升序排序

根据词缀总结一下

List和带“Linked”的实现都能保持插入顺序。

带"Hash"的实现速度都比较快,特别是读。

带“Tree”的实现都能在插入是进行排序。

以下的实现几乎没有理由再去使用

  Vector   最旧的List实现。几乎每个对外方法都是synchronized的,内部数组每次扩容时增长一倍,而不是像ArrayList一样增长50%。

  Hashtable  最旧的Map实现。几乎每个对外方法都是synchronized的,使用Enumeration进行迭代,contains性能太差。

  Stack    废弃API,LinkedList完全可以取代它。

选择哪个实现?

  List    默认选择ArrayList,需要大规模的增删时,选择LinkedList,需要线程安全时,选择Collections.synchronizedList()。

  Set    默认选择HashSet,对排序、保持插入顺序有需求时,按需选择,需要线程安全时,选择Collections.synchronizedSet()或Collections.synchronizedSortSet(),

  Queue   默认选择LinkedList,对保持插入顺序有需求时,选择PriorityQueue。

  Map    默认选择HashMap,对排序、保持插入顺序有需求时,按需选择,需要线程安全时,选择Collections.synchronizedMap()或Collections.synchronizedSortMap(),

线程相关的三种版本

synchronizedMap为整个散列表加锁;ConcurrentHashMap采用分段锁,将散列表分割成16个散列桶,每个线程只锁一个桶。

Java Collection Framework 备忘点的更多相关文章

  1. java collection framework

    java collection framework Map

  2. Java Collection Framework : List

    摘要: List 是 Java Collection Framework的重要成员,详细包括List接口及其全部的实现类.由于List接口继承了Collection接口,所以List拥有Collect ...

  3. 0. Java虚拟机系列备忘预览图

    打算把Java虚拟机这块单独弄一个主题出来,做做备忘,结构如图所示: 后面还有一部分待更新...

  4. Java Collection Framework概述

    文章出自:听云博客 Collection概述 Java collection是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映射等. Java集合主要可以划分为4个部分:Li ...

  5. 集合框架(JCF/Java Collection Framework)

    集合的特点:1.数据的类型可以不同2.集合长度可变3.空间不固定集合也是对象,用于检索,存储以及传输对象集合框架的组成Collection接口和Map接口 Collection是Set接口和List接 ...

  6. 设计: ListView 接口,and the missing read-only interfaces in java collection framework

    Java的集合框架以其成功易用的设计征服了很多人(包括我),并且教科书式的诠释了泛型的应用方式. 我也是被 Joshua Bloch 的书引领入门,从中得益良多.我当然不会认为自己在设计上比他懂得更多 ...

  7. Java输入输出流备忘

    重要博客: http://blog.csdn.net/hguisu/article/details/7418161 File dir = new File("\\root");   ...

  8. Java Socket基础[备忘]

    1.服务端----Server.java import javax.swing.*; import java.io.*; import java.net.*; import java.awt.*; i ...

  9. Java对象拷贝备忘

    列举 //cglib net.sf.cglib.beans.BeanCopier.create net.sf.cglib.beans.BeanCopier.copy //spring-beans or ...

随机推荐

  1. R|批量循环处理同一格式文件-csv,txt,excel

    本文首发于“生信补给站”微信公众号,https://mp.weixin.qq.com/s/8IfMrSr9xc8_1Y2_9Ne6hg 在一个文件夹下有很多字段一致,格式统一的数据文件(csv,txt ...

  2. 第四讲,数据目录表之导入表,以及IAT表

    一丶IAT(地址表) 首先我们思考一个问题,程序加载的时候会调用API,比如我们以前写的标准PE 那么他到底是怎么去调用的? 它会Call 下边的Jmp位置 而Jmp位置则是对一个全局变量取内容. 看 ...

  3. poj 2406 求最短重复字串

    题解: KMP中next数组的巧妙运用.在这里我们假设这个字符串的长度是len,那么如果len可以被len-next[len]整除的话,我们就可以说len-next[len]就是那个最短子串的长度为什 ...

  4. Autofac 使用经验

    慢慢总结 基础使用样例,在 Application_Start 中直接使用 //autofac注册 var builder = new ContainerBuilder(); //注册Controll ...

  5. JS OOP -03 JS类的实现

    JS类的实现: a.理解类的实现机制 b.使用prototype对象定义类成员 c.一种JS类的设计模式 a.理解类的实现机制 在JS中可以使用function关键字来定义一个类. 添加类的成员,在函 ...

  6. Rider开发开发.NET Framework 4.5项目遇到的一些问题

    使用rdier自带resharper功能,蛮爽的但是编译旧的项目时一直报错:Invalid option 'portable' for /debug; must be full or pdbonly' ...

  7. ASP.NET WEB应用程序(.network4.5)MVC Razor视图引擎2 视图模板页

    https://www.cnblogs.com/xlhblogs/archive/2013/06/09/3129449.html MVC Razor模板引擎 @RenderBody.@RenderPa ...

  8. 十六进制转换十进制(JAVA版)

    解题思路路大概为:现将十六进制数转换为二进制数,再讲二进制数转换为八进制数.在进行十六进制转换为八进制时可以利用JAVA中的‘&’运算符号,一个十六进制数可以表示为四个二进制数,利用‘& ...

  9. VBA算术运算符

    以下是VBA支持算术运算符. 假设变量A=5,变量B=10,那么 - 运算符 描述 示例 + 两个操作数相加 A + B = 15 - 两个操作数相减 A - B = -5 * 两个操作数相乘 A * ...

  10. form-create教程:自定义布局,实现一行多个组件

    本文将介绍form-create如何自定义布局,实现一行多个组件 form-create 是一个可以通过 JSON 生成具有动态渲染.数据收集.验证和提交功能的表单生成器.并且支持生成任何 Vue 组 ...