Java面试经验累积
2026/6/4 19:40:47 网站建设 项目流程

一、Java语言

1.1 HashMap和HashSet

1.1.1 HashMap底层原理

需要从数据结构、哈希算法、冲突解决三个层次来回答。
1.数据结构

核心组件:
Node<K,V>[] table:哈希桶数组,每个元素是一个链表或红黑树的头节点
int threshold:扩容阈值(capacity * loadFactor)
float loadFactor:负载因子,默认0.75(时间和空间的权衡)

1.1.2 HashSet底层原理

核心答案:HashSet底层就是基于HashMap实现的。

// HashSet源码(简化)publicclassHashSet<E>{privatetransientHashMap<E,Object>map;privatestaticfinalObjectPRESENT=newObject();// 占位对象publicHashSet(){map=newHashMap<>();}publicbooleanadd(Ee){returnmap.put(e,PRESENT)==null;// value固定为PRESENT}publicbooleanremove(Objecto){returnmap.remove(o)==PRESENT;}}

关键点:
HashSet的"元素"就是HashMap的key
HashMap的value固定为一个静态常量PRESENT(占位对象,不存储实际数据)
利用HashMap的key不重复特性,实现Set的去重功能

哈希冲突怎么解决?

① 链地址法(拉链法) —— 主要方案
数组每个位置是一个链表(或红黑树

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询