Java中HashSet和HashMap的底层原理和应用场景,你能详细解释一下吗?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3287个文字,预计阅读时间需要14分钟。
简介:本篇将简要介绍Java集合框架中的HashSet与HashMap。
内容:散列表集(HashSet)+ 快速入门 + 底层数据结构:动态数组加单向链表或红黑树。JDK 1.8之后,当链表长度超过阈值8时,链表将转换为红黑树。
简介
本篇将简单讲解Java集合框架中的HashSet与HashMap。
散列集(HashSet)
快速入门
- 底层原理:动态数组加单向链表或红黑树。JDK 1.8之后,当链表长度超过阈值8时,链表将转换为红黑树。
- 查阅HashSet的源码,可以看到HashSet的底层是HashMap,HashSet相当于只用了HashMap键Key的部分,当需要进行添加元素操作时,其值Value始终为常量PRESENT = new Object()。以下为HashSet的代码片段:
private transient HashMap<E,Object> map; public HashSet() { map = new HashMap<>(); } public boolean add(E e) { return map.put(e, PRESENT)==null; } public Iterator<E> iterator() { return map.keySet().iterator(); }
- 上面说到,在JDK 1.8之后,当链表长度超过阈值8时,链表将转为红黑树;当链表长度小于6时,红黑树重新转为链表。
本文共计3287个文字,预计阅读时间需要14分钟。
简介:本篇将简要介绍Java集合框架中的HashSet与HashMap。
内容:散列表集(HashSet)+ 快速入门 + 底层数据结构:动态数组加单向链表或红黑树。JDK 1.8之后,当链表长度超过阈值8时,链表将转换为红黑树。
简介
本篇将简单讲解Java集合框架中的HashSet与HashMap。
散列集(HashSet)
快速入门
- 底层原理:动态数组加单向链表或红黑树。JDK 1.8之后,当链表长度超过阈值8时,链表将转换为红黑树。
- 查阅HashSet的源码,可以看到HashSet的底层是HashMap,HashSet相当于只用了HashMap键Key的部分,当需要进行添加元素操作时,其值Value始终为常量PRESENT = new Object()。以下为HashSet的代码片段:
private transient HashMap<E,Object> map; public HashSet() { map = new HashMap<>(); } public boolean add(E e) { return map.put(e, PRESENT)==null; } public Iterator<E> iterator() { return map.keySet().iterator(); }
- 上面说到,在JDK 1.8之后,当链表长度超过阈值8时,链表将转为红黑树;当链表长度小于6时,红黑树重新转为链表。

