CodeGym /Java 博客 /China /Java 中的 HashSet contains() 方法
作者
John Selawsky
Senior Java Developer and Tutor at LearningTree

Java 中的 HashSet contains() 方法

已在 China 群组中发布

什么是 HashSet?

HashSet 是 Java 中的一种内置数据类型,通俗而言,你可以说“HashSet 是唯一元素的无序集合。” 参见下面的基本示例: Java 中的 HashSet contains() 方法 - 1

图 1:显示 HashSet 有效和无效示例的插图

(在继续之前,我们希望你了解术语哈希哈希表。) HashSet 扩展(扩展意味着类继承自另一个类)AbstractSet 并实现 Set 接口。在使用 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()

看看带 Stringscontains() 方法的另一个示例。

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 的顺序不同。 Java 中的 HashSet contains() 方法 - 2

结论

HashSet 的 contains() 方法是一个相当易于使用的方法。不过,如果有任何不懂的地方,可以参考这篇贴文。快乐编码!:)
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION