集合

数组特点:有序,可重复,有下标 

Collection  顶级接口,

List :Collection  下的子接口,

ArrayList,LinkedList,vector 都是 List 接口下的实现类

ArrayList :有序可重复,有下标,线程不安全,                   

存储结构:数组                   

 默认长度:10                   

 扩容机制:原长+(原长>>1)

LinkedList : 有序,可以使用for循环遍历                    

数据结构:双向链表(node、prev、item、next)                    没有默认长度,也没有扩容机制

ArrayList 与 LinkedList 的区别:               

当向头部添加大量数据时,LinkedList 有明显的优势。

vector :有序可重复,由下标               

 和 ArrayList 底层基本相同,                

线程安全,                

存储结构:数组                

默认长度:10                

扩容机制:步长为0时,扩容为原长2倍                                   

步长不为0时,原长+步长

Set : Collecion  下的子接口

HashSet,LinkedHashSet 都是 Set 接口下的实现类

HashSet:无序且不可重复

Map : 顶级接口,与Collection  同级

HashMap,HashTable,ConcurrentHashMap 都是 Map 接口下的实现类 

HashMap:键值对存储     查询快                    

存储结构:数组+链表(entry[ ])                    

默认长度:16                    

扩容方式:创建一个长度为原长2倍的新entry[ ] 数组,将数组中的每一个entry对象以hash 和新数组长度重新计算求模,计算出每个对象在新数组中链的下标,将每一个对象重新存入到新的数组中去

HashTable:键值对                    

存储结构:数组+链表                    

默认长度:11                    

扩容机制:原长度左移一位+1

HashMap 与  HashTable  的区别:                

1.默认长度不同(16 / 11)                

2.线程不安全 / 线程安全                

3.允许 null 键 null 值 / 不允许 null 键 null 值                

4.扩容条件:元素个数达到数组长度*加载因子 && 对应链不为空 /  只要元素个数大于等于数组长度*加载因子就会扩容                

5.扩容为原数组2倍  /   原长度左移一位 + 1

ConcurrentHashMap :分段锁                 

数据结构:Segment [ ] --->Segment 类似于 HashTable  ,实现线程安全的方式和HashTable  不同,HashTable  是通过同步锁来实现的,而Segment 是通过trylock()来实现的。            

有序的Map:TreeMap、LinkedHashMap

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。