java里flag.equals_如何实现hashcode和equals方法

equals()和hashcode(),它们有很多不同的地方。

equals(),如果我们不从对象重写它,它表示两个变量是否指向同一对象堆?

public Class Student(){

private int id;

private name;

public Student(int id,String name){

this.name=name;

this.id=id;

}

public void main(String[] args){

Student A=new Student(20,'Lily');

Student B=new Student(20,'Lily');

boolean flag=A.equals(B)//flag=flase;

/*

*Although they attribute the same, but they are two different objects, they point to different memory

*/

@Override

public boolean equals(Object obj) {

if (obj == null) {

return false;

}

if (this == obj) {

return true;

}

if (this.getClass() != obj.getClass()) {

return false;

}

Student s=(Student)obj;

return new Integer(this.id).equals(new Integer(s.id))&&this.name.equals(s.name);

}

/**

*Sometimes even though we Override the equals, but we still can not determine whether the *two objects the same,

*In the collection object, such as HashSet, this time we have to Override the hashoCode ()

*/

public int hashCode(){

return id + name.hashCode() ;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
优化代码 PlanOrderPushResponseVO planOrderPushResponseVO = JSON.parseObject(postResult, PlanOrderPushResponseVO.class); String flag = !StringUtils.isBlank(planOrderPushResponseVO.getFlag()) ? planOrderPushResponseVO.getFlag() : NumberConstant.CONSTANT_ONE.toString(); for (DesignPlanOrder planOrder : designPlanOrderList) { planOrder.setOrderPushResult(planOrderPushResponseVO.getMessage()); if (StringUtils.equals(NumberConstant.CONSTANT_ZERO.toString(),flag)){ planOrder.setOrderPushStatus(NumberConstant.CONSTANT_TWO); } else { planOrder.setOrderPushStatus(NumberConstant.CONSTANT_THREE); if (Objects.equals(NumberConstant.CONSTANT_ONE,source)){ delPlanOrderIdList.add(planOrder.getId()); } } planOrder.setOrderStatus(NumberConstant.CONSTANT_TWO); planOrder.setOrderProductionData(null); planOrder.setOrderQuotationData(null); planOrder.setOrderCadData(null); } designPlanOrderService.updateBatchById(designPlanOrderList); if (Objects.equals(NumberConstant.CONSTANT_ONE,source) && StringUtils.equals(NumberConstant.CONSTANT_ZERO.toString(),flag)){ //修改方案下单状态 designPlan.setPlanOrderStatus(NumberConstant.CONSTANT_TWO); designPlanService.updateById(designPlan); } //下单推送返回失败则废弃该订单 if (CollectionUtil.isNotEmpty(delPlanOrderIdList)){ designPlanOrderService.removeByIds(delPlanOrderIdList); Integer orderCount = designPlanOrderService.getPlanOrderCountByPlanCode(designPlan.getPlanCode()); if (null == orderCount || Objects.equals(NumberConstant.CONSTANT_ZERO,orderCount)){ designPlan.setPlanOrderStatus(NumberConstant.CONSTANT_ONE); } }
最新发布
05-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值