Java开发中如何选择集合实现类个人总结

Java开发中如何选择集合实现类个人总结

第一步:判断数据的类型(单列数据(k)(用Collection)还是双列数据(k-v)(用Map))
单列数据(k)Collection的实现类选择:

  1. 数据允许重复存储(List)
    1.1. 增加和删除元素的行为多:选择LinkedList实现类(双向链表式,增加和删除节点速度快)
    1.2. 改动和查找元素的行为多:选择ArrayList实现类(可变数组式,有索引,查找和修改的速度快),开始为0,然后存入数据时,默认扩容10,然后当存储不够了满了后,再扩容前面的1.5倍,
    1.3. 选择线程安全的:选择Vector实现类,和ArrayList实现类用法相似
  2. 数据不允许重复存储 (Set)
    2.1. 无序存储(添加元素顺序和取出元素顺序不一致):选择HashSet(底层是HashMap, 其存储结构为节点数组+单向链表/红黑树),16个大小Node,但是有一个加载因子0.75,具有临界值(threshold)16*0.75=12,当数组存储的元素到达12个节点时,就会自动扩容table数组为原来的2倍,临界值也会跟着扩容2倍。链表的元素超过8个且table节点数组的大小>=64个,这条链表就会进行树化,
    2.2. 自动排序存储(根据想要的key值的类型进行排序存储):选择TreeSet(底层是有参构造器可以写入一个匿名内部类比较器参数实现排序)
    2.3. 添加元素顺序和取出元素顺序一致:选择LinkedHashSet(底层是一个节点数组+双向链表,每个节点根据添加顺序进行前驱后继绑定)

双列数据(k-v)Map的实现类选择:

  1. key无序存储:选择HashMap(存储结构为节点数组+单向链表/红黑树),16个大小Node,但是有一个加载因子0.75,具有临界值(threshold)16*0.75=12,当数组存储的元素到达12个节点时,就会自动扩容table数组为原来的2倍,临界值也会跟着扩容2倍。
  2. key有序存储:选择TreeMap (底层是有参构造器可以写入一个匿名内部类比较器参数实现排序)
  3. 添加元素顺序和取出元素顺序一致:选择LinkedHashMap(底层是一个节点数组+双向链表,每个节点根据添加顺序进行前驱后继绑定)
  4. 读取配置文件数据:选择Properties(不允许有null值)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值