📜  Java中的HashSet hashCode()方法与示例(1)

📅  最后修改于: 2023-12-03 14:42:54.506000             🧑  作者: Mango

Java中的HashSet hashCode()方法与示例

简介

hashCode()方法是Java中的一个对象方法,用于获取对象在哈希表中的存储位置。在HashSet中使用hashCode()方法来确定每个元素在哈希表中的位置。

HashSet是一个可以存储对象的集合类,它通过哈希表实现元素的存储和查找。HashSet允许存储不同类型的对象,可以实现自动去重的功能。

使用

使用HashSet时,需要重写对象的hashCode()方法,以保证相同内容的对象具有相同的哈希码(hash code)。同时,也需要重写对象的equals()方法,在比较两个对象是否相等时使用。

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

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

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return age == person.age && Objects.equals(name, person.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}

在上面的示例中,Person类重写了hashCode()equals()方法。hashCode()方法通过调用Objects.hash()方法来生成哈希码,而equals()方法则比较了两个对象的nameage属性是否相等。

Set<Person> set = new HashSet<>();
Person p1 = new Person("Alice", 25);
Person p2 = new Person("Bob", 30);
Person p3 = new Person("Alice", 25);

set.add(p1);
set.add(p2);
set.add(p3);

System.out.println(set.size()); // 输出2

在上面的示例中,创建了三个Person对象,并将它们添加到HashSet中。由于p1p3对象的属性相同,因此它们的哈希码也相同。因此,HashSet中只会存储其中一个对象,最终输出集合大小为2。

总结

hashCode()方法和equals()方法是HashSet实现去重功能的基础。在使用HashSet时,需要重写这两个方法,以保证集合中的元素是按照自定义的方式去重的。