什么是 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) {
// Declare your hash set
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("All elements in hashset:\t" + digits);
// Try adding duplicates
digits.add(5);
digits.add(2);
System.out.println("After adding duplicates: \t" + digits);
System.out.println("\n-------Using Contains Method-------");
// Check out if the following digits exist in the hashset
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) {
// Try working with another hash set of String type
HashSet rainbow = new HashSet();
// Adding elements into HashSet using add()
rainbow.add("Red");
rainbow.add("Orange");
rainbow.add("Yellow");
rainbow.add("Green");
rainbow.add("Blue");
rainbow.add("Indigo");
rainbow.add("Violet");
// Let's traverse the hashset
System.out.println("Traversing the rainbow:");
for (String i : rainbow){
System.out.println(i);
}
// Check out if rainbow contains this color or not
System.out.println("\n-------Using Contains Method-------");
System.out.println("rainbow.contains(\"Yellow\"): \t" + rainbow.contains("Yellow"));
System.out.println("rainbow.contains(\"White\"): \t" + rainbow.contains("White"));
System.out.println("rainbow.contains(\"Lavender\"): \t" + rainbow.contains("Lavender"));
System.out.println("rainbow.contains(\"Red\"): \t" + rainbow.contains("Red"));
// Remove a color from rainbow using remove()
rainbow.remove("Red");
// Now consume set contains() method again to check if it's still present
System.out.println("rainbow.contains(\"Red\"): \t" + rainbow.contains("Red"));
System.out.println("\nAfter removing Red: " + rainbow);
}
}
输出
遍历彩虹:
红色
紫色
黄色
蓝色
靛色
橙色
绿色
-------使用 Contains 方法-------
rainbow.contains("黄色"):true
rainbow.contains("白色"):false
rainbow.contains("淡紫色"):false
rainbow.contains("红色"):true
rainbow.contains("红色"):false
移除红色后:[紫色, 黄色, 蓝色, 靛蓝, 橙色, 绿色]
如你所见,输出的顺序与将元素放入 Hashset 的顺序不同。
GO TO FULL VERSION