什么是 HashSet?
HashSet 是 Java 中的一种内置数据类型,通俗而言,你可以说“HashSet 是唯一元素的无序集合。” 参见下面的基本示例:
图 1:显示 HashSet 有效和无效示例的插图
- 它会创建集合(集合意思是一个单一的对象单元,例如:ArrayList、LinkedList、Vector 等)集合会将哈希表用作存储。
- HashSet 中不允许存在重复值。
- 你可以在 HashSet 中插入“null”值。
- 不要维护插入顺序。因此,如果你要按顺序插入项目,则 HashSet 并非最佳选择,将无法满足你的需求。
- 如果你想在固定的时间 (O(1)) 内获取/检索元素,那么 HashSet 是最好的方法之一。
什么是 HashSet.contains() 方法?
HashSet.contains() 是一个用于检查某个项目是否出现在 HashSet 实例中的布尔方法。简单来说,就是集合中是否包含所需的元素。Java.util.HashSet 提供对该方法的有效实现。 我们将介绍如何有效地使用它来解决你的问题。含整数的 contains()
import java.util.HashSet;
public class HashSetDemo {
public static void main(String[] args) {
// 声明你的哈希集
HashSet digits = new HashSet();
digits.add(0);
digits.add(1);
digits.add(2);
digits.add(3);
digits.add(4);
digits.add(5);
digits.add(null);
System.out.println("哈希集中的所有元素:\t" + digits);
// 尝试添加重复项
digits.add(5);
digits.add(2);
System.out.println("添加重复项后:\t" + digits);
System.out.println("\n-------使用 Contains 方法-------");
// 检查下列数字是否存在于哈希集中
System.out.println("digits.contains(0) : " + digits.contains(0));
System.out.println("digits.contains(2) : " + digits.contains(2));
System.out.println("digits.contains(3) : " + digits.contains(7));
System.out.println("digits.contains(null) : " + digits.contains(null));
}
}
输出
哈希集中的所有元素:[0, null, 1, 2, 3, 4, 5]
添加重复项后:[0, null, 1, 2, 3, 4, 5]
-------使用 Contains 方法-------
digits.contains(0) : true
digits.contains(2) : true
digits.contains(3) : false
digits.contains(null) : true
带字符串的 contains()
看看带 Strings 的 contains() 方法的另一个示例。
import java.util.HashSet;
public class HashSetDemo {
public static void main(String[] args) {
// 尝试使用 String 类型的另一个哈希集
HashSet rainbow = new HashSet();
// 使用 add() 将元素添加到 HashSet
rainbow.add("红色");
rainbow.add("橙色");
rainbow.add("黄色");
rainbow.add("绿色");
rainbow.add("蓝色");
rainbow.add("靛蓝");
rainbow.add("紫色");
// 遍历哈希集
System.out.println("遍历彩虹:");
for (String i : rainbow){
System.out.println(i);
}
// 检查彩虹是否包含此颜色
System.out.println("\n-------使用 Contains 方法-------");
System.out.println("rainbow.contains(\"黄色\"):\t" + rainbow.contains("黄色"));
System.out.println("rainbow.contains(\"白色\"):\t" + rainbow.contains("白色"));
System.out.println("rainbow.contains(\"淡紫色\"):\t" + rainbow.contains("淡紫色"));
System.out.println("rainbow.contains(\"红色\"):\t" + rainbow.contains("红色"));
// 使用 remove() 从彩虹中移除颜色
rainbow.remove("红色");
// 现在再次使用集的 contains() 方法检查该颜色是否仍存在
System.out.println("rainbow.contains(\"红色\"):\t" + rainbow.contains("红色"));
System.out.println("\移除红色后:" + rainbow);
}
}
输出
遍历彩虹:
红色
紫色
黄色
蓝色
靛色
橙色
绿色
-------使用 Contains 方法-------
rainbow.contains("黄色"):true
rainbow.contains("白色"):false
rainbow.contains("淡紫色"):false
rainbow.contains("红色"):true
rainbow.contains("红色"):false
移除红色后:[紫色, 黄色, 蓝色, 靛蓝, 橙色, 绿色]
如你所见,输出的顺序与将元素放入 Hashset 的顺序不同。

GO TO FULL VERSION