Java集合(基于JDK8)
2021-04-14 16:57:13 17 举报
基于JDK8的集合,区别一目了然
作者其他创作
大纲/内容
4
v=map.get(k)原理:1.调用k的hashCode()方法得到hash值2.通过哈希算法将hash转成数组下标,通过数组下标快速定位到某个位置上3.如果这个位置上什么也没有,返回null,如果这个位置上有单向链表,会·拿着参数k和单向链表上的每个节点的k进行equals,如果所有equals都是false,返回null,如果其中一个节点的k和参数kequals的时候返回true,则此节点value就是要找的value
Object k;Object v;int hash;Node next;
LinkedList
1.底层:双向链表2.优点:随机增删元素效率高3.缺点:检索效率低,得从第一个元素开始检索
Vector
有序可重复,存储单元有下标(从0开始,以1递增)
Hashtable
1.底层:HashMap2.放到HashSet中的元素等于放在了HashMap的key部分
1.元素在空间存储上地址内存地址连续,检索效率高,2.随机增删会有大量元素位移,随机增删效率低3.不能用于大量存储,因为很难在内存上找到连续的大量内存
TreeSet
1.span style=\"font-size: inherit;\
HashSet
Map
1.底层:数组2.初始化容量:103.扩容到原来的1.5倍建议给定预估计的初始化容量以减少扩容次数4.优点:检索效率高5.缺点:随机增删元素效率低
集合key部分元素会按大小顺序排序,称为可排序集合
3
Properties
TreeMap
放在其中的元素可以自动排序
Collection
List
Set
ArrayList
0
1.底层:二叉树2.key可以自动按照大小排序
因为放在Set中的元素等于放在Map中的key部分,所以Set中元素具有Map中key的特性:无序不可重复,进而可以把Map看做是特殊的Set(具有 k+v属性的实体),通过map.entrySet()方法实现Map→Set的转化; 集合中元素是否可以排序取决于底层数据结构;
无序不可重复,存储单元没有下标
SortedMap
1.底层:数组2.线程安全,效率低,使用少3.所有方法都有synchronized修饰
1.key、value只能存储字符串2.被称为属性类对象
SortedSet
数组
1.同一单向链表上所有节点的hash相同,因为它们的数组下标是一样的,2.同一链表上的k和k的equals方法返回是false,都不相等
链表:1.元素在空间存储上内存地址不连续,检索效率低2.随机增删元素不会有大量元素位移,随机增删效率高
1.底层:TreeMap2.放到TreeSet中的元素等于放在了TreeMap的key部分
可迭代的
1
单向链表
哈希表
2
Iterable
+ iterator()
HashMap
Iterator
+ hasNext()+ next()+ remove()
0 条评论
回复 删除
下一页