在 Java 中使用 contains() 方法判断 Set 集合中是否包含某元素

Set 集合简介
Set 是 Java 中常用的集合类型之一,与 List 集合不同的是,Set 不允许元素重复。Java 中的 Set 接口包含以下几个常用方法:


add(Object o) :将指定元素添加到 Set 中
remove(Object o):将指定元素从 Set 中删除
contains(Object o):判断 Set 中是否包含指定元素
size():返回 Set 中的元素数量
contains() 方法的使用
在判断一个集合中是否包含某个元素时,可以使用 Set 接口中的 contains() 方法。该方法的返回值为布尔型,若包含指定元素则返回 true,否则返回 false。以下是一个示例代码:

import java.util.HashSet;
import java.util.Set;

public class ContainsMethod {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        set.add("apple");
        set.add("banana");
        set.add("orange");

        if (set.contains("apple")) {
            System.out.println("set 中包含 apple");
        } else {
            System.out.println("set 中不包含 apple");
        }
    }
}
JavaCopy
上述代码中,我们创建了一个包含三种水果的 Set 集合,并使用 contains() 方法判断该集合中是否包含 “apple” 元素。该程序的输出结果为:

set 中包含 apple
BashCopy
可以看到,由于 Set 中包含了 “apple” 元素,故 contains() 方法返回 true。

如何判断自定义类型的元素
在上述示例代码中,集合中的元素均为字符串类型,因此 contains() 方法能够正确地识别这些元素。但是,当集合中的元素是自定义类型时,需要对该类型进行特殊处理才能够正确地使用 contains() 方法。以下是一个示例代码,使用自定义类型作为 Set 集合的元素:

import java.util.HashSet;
import java.util.Set;

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof Person)) return false;
        Person person = (Person) o;
        return getAge() == person.getAge() &&
                Objects.equals(getName(), person.getName());
    }

    @Override
    public int hashCode() {
        return Objects.hash(getName(), getAge());
    }
}

public class ContainsCustomType {
    public static void main(String[] args) {
        Set<Person> set = new HashSet<>();
        set.add(new Person("Alice", 22));
        set.add(new Person("Bob", 25));
        set.add(new Person("Charlie", 30));

        Person targetPerson = new Person("Alice", 22);
        if (set.contains(targetPerson)) {
            System.out.println("set 中包含 " + targetPerson.getName());
        } else {
            System.out.println("set 中不包含 " + targetPerson.getName());
        }
    }
}
JavaCopy
在上述代码中,我们创建了一个包含三个 Person 类型对象的 Set 集合,并将其中的一个对象(名为 “Alice”,年龄为 22 岁)作为搜索目标。这里需要注意的是,如果希望 contains() 方法能够正确地识别自定义类型的元素,需要为该类型重写 equals() 和 hashCode() 方法。

equals() 方法用于判断两个类型对象在逻辑上是否相同。当需要判断两个对象是否相等时,Java 会调用 equals() 方法。在上述代码中,我们重写了 Person 类型的 equals() 方法,使其在判断两个 Person 对象是否相等时只考虑姓名和年龄是否相同。

hashCode() 方法用于返回对象的哈希码值。哈希码值是 Java 中的一个整型值,被用于快速查找集合中的元素。在上述代码中,我们同样重写了 Person 类型的 hashCode() 方法,使其在计算哈希码值时只考虑姓名和年龄两个成员变量。

运行上述程序,输出结果如下:


set 中包含 Alice
BashCopy
可以看到,由于 Set 中包含名为 “Alice”,年龄为 22 岁的对象,故 contains() 方法返回 true。

结论
使用 Set 接口中的 contains() 方法能够判断一个集合中是否包含指定的元素
当集合中的元素为自定义类型时,需要重写该类型的 equals() 和 hashCode() 方法,以保证 contains() 方法能够正确地识别元素

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值