🌟 鱼式解读 🌟
这里分享的并非官方术语,而是经过消化吸收后的白话总结。我会在每个知识点后加入”鱼式解读”,用更接地气的方式帮助大家理解。虽然表述可能不够学术化,但希望能让更多朋友轻松掌握这些概念!
核心内容:
1. HashSet详解
2. HashMap剖析
开篇导语
在Java集合框架的大家族中,HashMap和HashSet堪称两大明星成员。它们虽然都基于哈希原理,但在数据结构设计和应用场景上却各具特色。本文将带您深入理解它们的底层实现逻辑,分析性能差异,并分享实际开发中的最佳实践方案。
第一部分 HashSet解析
1. 初识Set集合
Set接口作为Collection的子接口,主要通过三个实现类来体现其特性:
– SortedSet(有序集合)
– TreeSet(基于树的实现)
– HashSet(基于哈希表的实现)
Set集合的核心特点是:
– 仅存储键值(key)
– 键值具有唯一性
– 存储的元素不可修改
本文重点探讨HashSet的实现原理。
鱼式解读
Set在英语中既有”设置”之意,也指代”集合”。在Java中,它特指具有以下特性的集合:
1. 元素排列无序
2. 元素不可重复
2. 常用方法实践
以下是开发中最常用的几个方法,足以应对大多数算法题和面试场景。如需更全面的方法说明,可查阅官方文档参考。
Set官方文档参考
3. 实战代码演示
public class SetDemo {
public static void main(String[] args) {
Set<Integer> numberSet = new HashSet<>();
// 添加元素
numberSet.add(1);
numberSet.add(2);
numberSet.add(3);
// 使用迭代器遍历
Iterator<Integer> it = numberSet.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
// 检查元素存在性
if(numberSet.contains(4)) {
System.out.println("元素4存在");
} else {
System.out.println("元素4不存在");
}
// 获取集合大小
System.out.println("集合大小:" + numberSet.size());
// 删除元素
numberSet.remove(4);
}
}
方法说明:
– add()
添加元素,已存在则失败
– contains()
检查元素存在性
– remove()
删除指定元素
– size()
获取元素数量
– iterator()
获取遍历迭代器
鱼式解读
关键要点:
1. HashSet主要应用于元素去重场景,时间复杂度仅为O(1)
2. HashSet允许存储null值
第二部分 HashMap详解
1. Map接口入门
Map接口特点:
– 独立于Collection体系
– 主要实现类:HashMap/TreeMap
– 存储键值对(Key-Value)
键值特性:
– Key作为唯一标识
– Key不可修改
– Value存储实际数据
哈希表类比:
– 数组下标相当于索引
– Key通过哈希函数计算得到索引位置
– Value存储在对应索引位置
鱼式解读
小贴士:
HashMap允许键值对都为null
2. Map.Entry详解
Map.Entry是Map接口的静态内部类,用于封装键值对,无需实例化Map即可使用。主要方法包括:
示例代码:
public static void main(String[] args) {
Map.Entry entry = Map.entry("key","value");
System.out.println("键:" + entry.getKey());
System.out.println("值:" + entry.getValue());
}