对象的关联/toString/equals

2019-03-30  本文已影响0人  Finlay_Li

对象的关联

class Employee 包含 class MyDate

if(o1 instanceof Employee && o2 instanceof Employee){

            Employee em=(Employee) o1;

            Employee emp=(Employee) o2;

            MyDate md1 = em.getBirthday();

            MyDate md2 = emp.getBirthday();

            if(md1.getYear().equals(md2.getYear())){

                if(md1.getMonth().equals(md2.getMonth())){

                    return md1.getDay().compareTo(md2.getDay());

                }else {

                    return md1.getMonth().compareTo(md2.getMonth());

                }

            }else{

                return md1.getYear().compareTo(md2.getYear());

            }
}

java.lang.Object

  1. 既然 Object 是所有类的父类,因此 Object 类中的内容是最具共性的

  2. 既然 Object 是所有类的父类,因此子类可以继承 Object 类中所有的方法

  3. 既然 Object 是所有类的父类,若 Object 类中的方法对于子类不适用,子类也可以重写 Object 类中的方法

to String()

要得到一个人,即输出p,但是输出结果是hashCode
我们想要的人是有具体属性的,字,年龄等等,才叫“人”。

public String toString(){
   return "姓名:" + name + " 年龄:" + age;
}

equals()

以下是网上截图,说的不错

image.png image.png image.png

重写hashCode() 和 equals()

是否问过自己,为什么要重写hashCode() 和 equals()?
确定两个对象是否相同,或者说,控制两个对象的比较

@Data
public class RankingVO {
    private Integer id = 1;
    private BigDecimal num;
    private String nickName;
    private String uuid;
    private Integer ranking;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof RankingVO)) return false;
        RankingVO rankingVO = (RankingVO) o;
        return Objects.equals(nickName, rankingVO.nickName) && Objects.equals(uuid, rankingVO.uuid);
    }

    @Override
    public int hashCode() {
        return Objects.hash(nickName, uuid);
    }
}
public Callable<ResponseEntity<ResponseData>> history(HttpServletRequest request) {
        Callable<ResponseEntity<ResponseData>> result = new Callable<ResponseEntity<ResponseData>>() {
      //参与了分发奖池的排名
      List<RankingVO> inPoolList = poolDetailService.queryByHistory(cycle);
            if (CollectionUtils.isEmpty(inPoolList)) {
                inPoolList = new ArrayList<>();
      }
      //..........

      //当前用户
      RankingVO currentRankingVO = new RankingVO();
      //.........
      //排名:只要nickName, uuid相等的,就视为相同,取其排序过的索引
      Integer i = inPoolList.indexOf(currentRankingVO);
      //.........
}
上一篇下一篇

猜你喜欢

热点阅读