Java HashSet 与 HashMap

作者:编程家 分类: java 时间:2025-06-17

Java HashSet和HashMap是Java中常用的集合类,它们在处理数据时有着不同的特点和用途。本文将分别介绍HashSet和HashMap,并通过案例代码来展示它们的使用。

HashSet

HashSet是基于哈希表实现的无序集合,它不允许存储重复的元素。HashSet内部使用HashMap来存储元素,其中元素作为HashMap的键,而对应的值则是一个固定的常量对象。HashSet提供了高效的插入、删除和查找操作,适用于需要快速判断元素是否存在的场景。

下面是一个使用HashSet的例子,我们使用HashSet来存储一些学生的姓名,并判断某个学生是否存在于集合中。

java

import java.util.HashSet;

public class HashSetExample {

public static void main(String[] args) {

HashSet students = new HashSet<>();

// 添加学生姓名

students.add("张三");

students.add("李四");

students.add("王五");

// 判断学生是否存在

if (students.contains("张三")) {

System.out.println("张三在学生名单中");

} else {

System.out.println("张三不在学生名单中");

}

if (students.contains("赵六")) {

System.out.println("赵六在学生名单中");

} else {

System.out.println("赵六不在学生名单中");

}

}

}

上述代码中,我们创建了一个HashSet对象`students`,并使用`add`方法向集合中添加了几个学生姓名。然后使用`contains`方法来判断某个学生是否存在于集合中。运行代码,输出结果如下:

张三在学生名单中

赵六不在学生名单中

可以看到,HashSet提供了高效的元素查找功能,通过哈希表的快速查找,我们可以在集合中快速判断某个元素是否存在。

HashMap

HashMap是一种无序的键值对集合,它也是基于哈希表实现的。HashMap允许键和值都为null,并且允许存储重复的值但不允许键重复。HashMap提供了高效的插入、删除和查找操作,适用于需要根据键来查找值的场景。

下面是一个使用HashMap的例子,我们使用HashMap来存储一些城市和对应的人口数量,并根据城市名来查找对应的人口数量。

java

import java.util.HashMap;

public class HashMapExample {

public static void main(String[] args) {

HashMap population = new HashMap<>();

// 添加城市和人口数量

population.put("北京", 21540000);

population.put("上海", 24180000);

population.put("广州", 14040000);

// 查找城市的人口数量

int beijingPopulation = population.get("北京");

System.out.println("北京的人口数量:" + beijingPopulation);

int shenzhenPopulation = population.getOrDefault("深圳", 0);

System.out.println("深圳的人口数量:" + shenzhenPopulation);

}

}

上述代码中,我们创建了一个HashMap对象`population`,并使用`put`方法向集合中添加了几个城市和对应的人口数量。然后使用`get`方法根据城市名来查找对应的人口数量。如果某个城市不存在于集合中,可以使用`getOrDefault`方法来设置一个默认值。运行代码,输出结果如下:

北京的人口数量:21540000

深圳的人口数量:0

可以看到,HashMap提供了高效的键值对查找功能,通过哈希表的快速查找,我们可以根据键来快速查找对应的值。

HashSet和HashMap是Java中常用的集合类,它们分别适用于不同的场景。HashSet适用于需要快速判断元素是否存在的场景,而HashMap适用于需要根据键来查找值的场景。通过合理选择集合类,我们可以提高程序的效率和性能。在实际开发中,根据具体的需求选择合适的集合类是非常重要的。