一只IT界中的菜鸟,我立志做一只最菜的鸟
作为一个程序猿我们要有一个善于分析你所见到的产品,最起码你要知道让你做你能不能实现功能
话不多说进入主题
去重作用就是保证数据的唯一性,去重要做的第一件事就是 重写 Object 中的equals 和 hashCode方法
为什么要重写这两个方法
我们要知道Object类中定义的equals()方法是用来比较两个引用所指向的对象的内存地址是否一致;hashCode()是根据对象的值。
有时我们会希望两个不同对象的值相同时、就认为它们两个相同,但是Object中的equals()比较的是地址,所以重写equals()方法,HashCode同样的原理
到本文的重点了上代码
- 继承Object类
public class people extends Object {
2.重写equals 和 hashCode方法
@ Override
public boolean equals(Object o){
if (o==null) //if后面只有一行是可以省略 {}
return false;
if (this==o)
return true;
if (o instanceof people){ //instacheof 比较两个是否是同一类型的对象
people p= (people)o;
if (p.getName().equals(this.getName()) && p.getAge().equals(this.getAge())){ //name和age是我提供的两个属性
return true;
}
}
return false;
}
@Override
public int hashCode(){
return Objects.hash(name,age);
}
3.测试
@GetMapping("/postMan")
public String postman(){
Set <people> peopleHashSet = new HashSet<>();
people p = new people();
p.setName("c罗");
p.setAge(34);
people p1 = new people();
p1.setName("c罗");
p1.setAge(34);
people p2 = new people();
p2.setName("姚明");
p2.setAge(36);
/* people p1 = new people("姚明",36); //这样写必须要有 构造函数
people p2 = new people("c罗",34);*/ peopleHashSet.add(p);
peopleHashSet.add(p1);
peopleHashSet.add(p2);
String resultPostNan=null;
for (people ps: peopleHashSet) {
resultPostNan += ps. toString ();
}
return resultPostNan;
}
4 结果
如果有不明白的地方,可在下方留言评论或者私信留言,空闲时间看到会回复,如有不同见解欢迎指出问题,共同进步!!!
结束语
预祝全国高考考生,旗开得胜 高考加油送给千万辛辛学子