Set

2020-02-29  本文已影响0人  发光的老金

Set是元素无序并且不可以重复的集合,被成为集
HashSet 哈希集,是Set的一个重要实现类

主要方法

  1. 首先需要重写hashCode方法.(必须重写hashCode方法!)
  2. 其次需要重写equals方法。
    假如只重写equals方法会出现什么情况呢?
    只重写equals方法,那么重写的equals方法是无效的!
    原因是添加对象时首先会调用父类Object类中的hashCode方法(本地方法,无法根据散列码得到对象的内存地址,但实际上,hashcode是根据对象的内存地址经哈希算法得来的)。因此两个对象的hashCode的值是不相等的!这样就会认为这是两个不同的元素.
public class Student implements Cloneable {
    private int age;
    private String name;

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

    public int getAge() {
        return age;
    }

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

    public String getName() {
        return name;
    }

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

    @Override
    public String toString() {
        return "Student [age=" + age + ", name=" + name + "]";
    }

    @Override
    public Object clone() throws CloneNotSupportedException {
        return super.clone();
    }

    public int hashCode() {
        return name.hashCode();
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        Student other = (Student) obj;
        return other.name.equals(this.name);

    }
}

这样就根据Student里的name字段判断是是否传入的是同一个学生对象。

HashMap和HashSet的区别

上一篇 下一篇

猜你喜欢

热点阅读