温馨提示×

java set 类型如何去重

小樊
81
2024-11-30 01:33:22
栏目: 编程语言

在 Java 中,可以使用 Set 集合类型来存储不重复的元素。如果你想要去除一个 Set 中的重复元素,可以直接使用 Set 的特性,因为 Set 不允许重复元素。但是,如果你有一个自定义对象类型的 Set,并且想要去除重复元素,你需要重写该对象的 equals()hashCode() 方法。

以下是一个简单的示例,展示了如何使用 Set 去重:

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

public class Main {
    public static void main(String[] args) {
        Set<String> set1 = new HashSet<>();
        set1.add("apple");
        set1.add("banana");
        set1.add("apple"); // 重复元素,不会被添加到集合中

        System.out.println("Set1: " + set1); // 输出:Set1: [apple, banana]

        Set<MyObject> set2 = new HashSet<>();
        set2.add(new MyObject("A", 1));
        set2.add(new MyObject("B", 2));
        set2.add(new MyObject("A", 1)); // 重复对象,不会被添加到集合中

        System.out.println("Set2: " + set2);
    }
}

class MyObject {
    private String name;
    private int value;

    public MyObject(String name, int value) {
        this.name = name;
        this.value = value;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        MyObject myObject = (MyObject) o;
        return value == myObject.value &&
                (name == myObject.name || (name != null && name.equals(myObject.name)));
    }

    @Override
    public int hashCode() {
        int result = name != null ? name.hashCode() : 0;
        result = 31 * result + value;
        return result;
    }
}

在这个示例中,我们创建了一个 String 类型的 Set(set1),它可以自动去除重复元素。然后,我们创建了一个自定义对象类型 MyObjectSet(set2),并重写了 equals()hashCode() 方法,以便在添加重复对象时去除它们。

0