Java中HashSet和HashMap的底层原理和应用场景,你能详细解释一下吗?

2026-04-19 15:281阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计3287个文字,预计阅读时间需要14分钟。

Java中HashSet和HashMap的底层原理和应用场景,你能详细解释一下吗?

简介:本篇将简要介绍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的底层原理和应用场景,你能详细解释一下吗?

简介:本篇将简要介绍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时,红黑树重新转为链表。
阅读全文