基础数据结构

StringSringBufferStringBuilder
不可变类可变可变
 线程安全线程不安全
  性能高

Collection

Set

无序、不可重复

List

有序、可重复

Queue

队列

Map

Map

key-value映射

   

Set:               
HashSet可插入null              
TreeSet不可插入null红黑树自然排序和定制排序自动排序时,插入的对象对应的类必须实现 Comparable 接口 ,且为同一个类定制排序时构造 compare(T o1, To2)
不要修改set中的值,将导致复杂问题,如不会重新排序,修改后的值存在原来的存储位置无法找到等       
EnumSet有序的向量存储,占内存少,效率在Set里最高不允许插入null无暴露构造方法,通过类方法创建实例     
                
只有需要排序时用 TreeSet,其它的都用HashSet,因为性能更好,LinkedHashSet是HashSet子类,遍历的时候会更快(由于维护了有序链表),其它性能略低一些,上面Set都是线程不安全的
值不可重复,插入重复值将覆盖             
                
List:               
ArrayList 线程不安全基于数组实现默认长度 10可插入null          
Vector 线程安全(老旧)Stack继承 Vector 老旧            
LinkedList               
                
大部分情况优先使用 ArrayList,然后是 LinkedList, LinkedList用Iterator 遍历,ArrayList 用随机访问 get 方法遍历      
Collections 包装成线程安全             
值可重复,可插入重复值             
                
Queue:               
PriorityQueue 不可插入null自然排序和定制排序自动排序时,插入的对象对应的类必须实现 Comparable 接口 ,且为同一个类定制排序时构造 compare(T o1, To2)
ArrayDeque可插入null基于数组实现默认长度 16超过默认或指定长度会重新分配新数组 双端队列和栈  
LinkedList 可插入null基于链表 插入、删除快,查询需要迭代,相比基于数组的慢  List、双端队列和栈  
                
Map:               
先实现了map,然后把map中value都设置为null 就是 set           
值可重复,可插入重复值,但key不能重复,重复的key将覆盖原值          
get、remove的key不存在返回null             
一些规则和HashSet基本一致             
key 的 equals()和 hashcode()都相等即为相同key           
                
Hashtable 线程安全key value不能为null老旧避免使用         
HashMap 线程不安全key value能为nullkey不能重复,所有最多有一个key为null底层也是数组实现      
LinkedHashMap 同 LinkedHashSet           
Properties kv保存到文件或从文件加载到map无序          
TreeMap 不可插入null红黑树自然排序和定制排序自动排序时,插入的对象对应的类必须实现 Comparable 接口 ,且为同一个类定制排序时构造 compare(T o1, To2)
WeakHashMap对key弱引用直接量永远是强引用           
IdentityHashMap和HashMap唯一的区别是要求key严格相等才认为是一个key(O a == O b)       
EnumMap 创建时必须关联枚举类EnumMap enumMap = new EnumMap(Season.class)       
性能:EnumMap > Hashtable > HashMap = IdentityHashMap = WeakHashMap > LinkedHashMap > TreeMap      
                
负载极限默认值是  0.75              
                
Collections 工具类:              
排序 主要用于List             
查询、替换主要用于List             
同步控制 Map<String, Object> m = Collections.synchronizedMap(new HashMap<>());       
  List<String> l = Collections.synchronizedList(new ArrayList<>());        
  Collection<String> c = Collections.synchronizedCollection(new ArrayList<>());       
设置不可变集合              
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值