JDK 开发者可不管你到底如何用 remove,如何写 equals 和 hashcode。只需要保证在使用时能正确的实现所需要的功能就行。
一个存储了 14 亿个 Person 对象的 List,我要在 2020 年消灭贫困人口,那我定义的贫困人口就是月收入等于 1000 的人。
定义两个类,一个类是 Person,一个类是 Poor,两个类都只有 2 个字段,String name 和 int salary。
Person 类的 equals 和 hashCode 内容为
@
Override public boolean equals(Object obj) {
Poor p = (Poor) obj;
return this.getMoney() == p.getMoney();
}
@
Override public int hashCode() {
return Objects.hash(this.getMoney());
}
Poor 类的 equals 和 hashCode 内容为
@
Override public boolean equals(Object obj) {
Person p = (Person) obj;
return this.getMoney() == p.getMoney();
}
@
Override public int hashCode() {
return Objects.hash(this.getMoney());
}
准备消灭贫困人口
先创建一个容纳 14 亿个 Person 对象的 List
List<Person> people = new ArrayList<>(.....);
people.add(..);
.....
.....
再创建一个贫困人口对象来代表我定义的贫困人口
Poor poor = new Poor("cruii", 1000); // 就是我为例子了
现在开始消灭
while (people.contains(poor)) {
people.remove(poor);
}
好了,全部跟我一样贫困的全被消灭了