JAVA集合使用概述

Set集合概述
1.继承自collection接口
2.无序存放
3.没有重复元素
常用Set集合
HashSet
1.使用HASH算法来存储元素
2.equals() / hashCode()方法比较对象相等
LinkedHashSet
1.与HashSet类似
2.链表结构保存插入顺序
TreeSet
1.继承自SortedSet
2.集合中元素排序

支持并发的Set集合
1.CopyOnWriteArraySet : 线程安全的无序的集合
内部实现为CopyOnWriteArrayList

2. ConcurrentSkipListSet : 线程安全的有序的集合
内部实现为ConcurrentSkipListMap

3. Collections.synchronizedSet(set)

Set集合总结:
HashSet适用于普遍场景
TreeSet是有序集合
LinkedHashSet保持插入时顺序

Collections.synchronizedSet(set)适用于普遍高并发场景
ConcurrentSkipListSet是有序集合
CopyOnWriteArraySet使用ReentrantLock实现,有更好性能,适用于读多写少的高并发场景

List集合概述:
继承自collection接口
有序存放
允许重复元素
ArrayList
1.基于动态数组实现
2.扩容机制
3.查询元素快,插入,删除中间元素慢
在这里插入图片描述
LinkedList
1.基于双向链表实现
2.查询元素慢,插入,删除中间元素快
在这里插入图片描述
支持并发的List集合:
1.Vector:基于数组实现,与ArrayList类似,线程安全(方法被synchronized修饰)
2.CopyOnWriteArrayList:写时复制(读写分离),使用ReentrantLock
List集合总结 (ArrayList VS LinkedList):
1.ArrayList查询快,写数据慢;LinkedList查询慢,写数据快
2.ArrayList查询快是因为底层是由数组实现,通过下标定位数据快。写数据慢是因3.为复制数组耗时。LinkedList底层是双向链表,查询数据依次遍历慢。写数据只需修改指针引用
4.ArrayList和LinkedList都不是线程安全的,小并发量的情况下可以使用Vector,若并发量很多,且读多写少可以考虑使用CopyOnWriteArrayList,因为5.CopyOnWriteArrayList底层使用ReentrantLock锁,比使用synchronized关键字的Vector能更好的处理锁竞争的问题

Map集合
常用的Map类:
1.HashMap:非线程安全,equals和hashCode,key和value允许null
在这里插入图片描述
2.LinkedHashMap:非线程安全,满足HashMap特性,存入顺序和取出顺序一致
在这里插入图片描述
LinkedHashMap顺序保证:
在这里插入图片描述
3.TreeMap:非线程安全,数据排序,firstEntry()就是取出的排序后最大或最小的值
在这里插入图片描述
4.HashTable:数据结构和HashMap差别不大,线程安全,方法名前加synchronized,key和value不允许null
在这里插入图片描述
5.Collections.synchronizedMap:
在这里插入图片描述

性能对比:
单线程:
HashMap>SynchronizedMap>Hashtable>ConcurrentHashMap
多线程:
ConcurrentHashMap>SynchronizedMap>Hashtable

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值