java中重写equals方法的目的,java 中 重写equals方法的用处

以前只是在学习java的时候遇到了equals方法,对于重写equals有什么用是一点也不清楚,今天在项目在做比对的时候出了问题,

就试着重写了equals方法,结果就解决了问题。

在开发的时候,经常用到实体类,一般都会这么写

public class MsgDetailsBean {

private String types, content, createtime;

public String getTypes() {

return types;

}

public void setTypes(String types) {

this.types = types;

}

public String getContent() {

return content;

}

public void setContent(String content) {

this.content = content;

}

public String getCreatetime() {

return createtime;

}

public void setCreatetime(String createtime) {

this.createtime = createtime;

}

@Override

public String toString() {

return "MsgDetailsBean [types=" + types + ", content=" + content

+ ", createtime=" + createtime + "]";

}

}然后项目中有个需求是列表中不能有重复的数据,也就是在刷新列表的时候如果数据有重复就不加载,我是这么写的

for (MsgDetailsBean bean : baseList.getList()) {

if (!msgList.contains(bean)) {

msgList.add(bean);

}

}

结果发现if (!msgList.contains(bean)) 总为true,有数据重复的时候contains方法也认为bean是不同的。

然后我仔细想了想contains比较的是object,而object比较是通过equals来返回true和false的,加上之前有了解过

equals(),所以我就试着重写了MegDetailsBean的equals()

@Override

public boolean equals(Object o) {

if (o instanceof MsgDetailsBean) {

MsgDetailsBean bean = (MsgDetailsBean) o;

if (bean.getCreatetime().equals(createtime)) {

return true;

}

}

return false;

}我是先判断object是不是MsgDetailsBean的类型,如果是的话,就通过唯一的时间戳来判断是否相等,从而达到了自己

想要的效果。

这里相不相等的判断条件应该根据项目实际的需求来定

如果不重写的话,object基类的equals()

public boolean equals(Object o) {

return this == o;

}他是比较实例的,而不断通过new的方式来获取的实例是不可能相等的。 mark。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值