Java集合包学习总结
2018-01-24 10:22
190 查看
Java集合包学习总结
集合包总体架构:
List:
ArrayList:
基于动态数组实现。
数组的容量根据实际需求变化,空构造器的默认长度是10。
非线程安全。
LinkedList:
基于双向链表实现。
Entry<E>是LinkedList中的一个内部类。
空构造器默认仅含一个头节点Entry<E> header的空双向链表。
顺序访问比较高效,随机访问效率极低。
非线程安全。
Vector:
是一个矢量队列,支持增加、删除、修改、遍历等操作。
与ArrayList数据结构类似,同样基于数组实现。
线程安全。
Stack:
继承于Vector,是栈。
同样基于数组实现。
线程安全。
Map:
HashMap:
是一个散列表,存储内容是key-value键值对,内部类Entry<K,V>是一个单向链表,默认初始容量是16,加载因子为0.75。
容量指哈希桶的数量,加载因子是哈希表在自动增加容量之前可以达到多满的一个尺度。
当哈希表中的条目数超出了加载因子与当前容量的乘积时,则要对该哈希表进行 rehash
操作(即重建内部数据结构)。
使用拉链法解决哈希冲突。
允许空(null)键值。
非线程安全。
HashTable:
数据结构和HashMap类似,也是使用拉链法解决哈希冲突。
不允许空(null)键值。
线程安全。
TreeMap:
是一个有序的key-value列表,基于红黑树实现,该映射根据其键的自然顺序进行排序。
支持null值,默认不支持null键,通过传入Comparator比较器的方式可以实现支持null键。
非线程安全。
WeakHashMap:
数据结构和HashMap类似。
允许空(null)键值。
非线程安全。
WeakHashMap的键为弱键,当某“弱键”不再被其它对象引用,并被GC回收时。在GC回收该“弱键”时,这个“弱键”也同时会被添加到ReferenceQueue(queue)队列中。
当下一次我们需要操作WeakHashMap时,会先同步table和queue。table中保存了全部的键值对,而queue中保存被GC回收的键值对;同步它们,就是删除table中被GC回收的键值对。
Set:
HashSet:
基于HashMap实现。
无序,无重复。
非线程安全。
TreeSet:
基于TreeMap实现。
有序,无重复。
非线程安全。
学习于非常详细的集合包详解http://www.cnblogs.com/skywang12345/p/3323085.html
集合包总体架构:
List:
ArrayList:
基于动态数组实现。
数组的容量根据实际需求变化,空构造器的默认长度是10。
非线程安全。
LinkedList:
基于双向链表实现。
Entry<E>是LinkedList中的一个内部类。
空构造器默认仅含一个头节点Entry<E> header的空双向链表。
顺序访问比较高效,随机访问效率极低。
非线程安全。
Vector:
是一个矢量队列,支持增加、删除、修改、遍历等操作。
与ArrayList数据结构类似,同样基于数组实现。
线程安全。
Stack:
继承于Vector,是栈。
同样基于数组实现。
线程安全。
Map:
HashMap:
是一个散列表,存储内容是key-value键值对,内部类Entry<K,V>是一个单向链表,默认初始容量是16,加载因子为0.75。
容量指哈希桶的数量,加载因子是哈希表在自动增加容量之前可以达到多满的一个尺度。
当哈希表中的条目数超出了加载因子与当前容量的乘积时,则要对该哈希表进行 rehash
操作(即重建内部数据结构)。
使用拉链法解决哈希冲突。
允许空(null)键值。
非线程安全。
HashTable:
数据结构和HashMap类似,也是使用拉链法解决哈希冲突。
不允许空(null)键值。
线程安全。
TreeMap:
是一个有序的key-value列表,基于红黑树实现,该映射根据其键的自然顺序进行排序。
支持null值,默认不支持null键,通过传入Comparator比较器的方式可以实现支持null键。
非线程安全。
WeakHashMap:
数据结构和HashMap类似。
允许空(null)键值。
非线程安全。
WeakHashMap的键为弱键,当某“弱键”不再被其它对象引用,并被GC回收时。在GC回收该“弱键”时,这个“弱键”也同时会被添加到ReferenceQueue(queue)队列中。
当下一次我们需要操作WeakHashMap时,会先同步table和queue。table中保存了全部的键值对,而queue中保存被GC回收的键值对;同步它们,就是删除table中被GC回收的键值对。
Set:
HashSet:
基于HashMap实现。
无序,无重复。
非线程安全。
TreeSet:
基于TreeMap实现。
有序,无重复。
非线程安全。
学习于非常详细的集合包详解http://www.cnblogs.com/skywang12345/p/3323085.html
相关文章推荐
- 黑马程序员学习log第五篇基础知识:JAVA的面向对象之集合总结
- Java集合框架学习总结
- Java集合与框架总结与学习
- 黑马程序员 Java学习总结之集合框架(List篇)
- java学习之集合之终极总结
- 黑马程序员——Java学习笔记之11——“Collection集合”总结
- java 集合类学习总结
- JAVA集合框架学习总结
- Java集合深入学习总结-ArrayList
- java学习(11)集合框架总结
- Java集合深入学习总结-LinkedHashMap
- Java学习总结之第十一章 Java集合
- 【Java开发】--Java集合与框架总结与学习
- 重踏学习Java路上_Day17(登录注册案例,Set集合,Collection集合总结,在集合中常见的数据结构)
- 黑马程序员--集合框架知识总结和泛型--java学习日记7(基础知识)
- Java学习----集合框架总结
- java 集合框架学习总结
- 黑马程序员——Java中集合学习总结
- Java集合框架学习总结
- java学习笔记11--集合总结