DESKTOP-F6K5GEP_20200903-崔婧涓
一、问题
今天的作业中使用 【匿名类】实现 比较器接口 ,以便于按照 Customer 的 birthdate 升序排序
    // 使用 【匿名类】实现 比较器接口 ,以便于按照 Customer 的 birthdate 升序排序
    Comparator<Customer> comparator = new Comparator<Customer>(){
        @Override
        public int compare(Customer o1, Customer o2) {
            if(o1.getBirthdate().isAfter(o2.getBirthdate())) {
                return -1;
            }else if(o1.getBirthdate().equals(o2.getBirthdate()) ) {
                return 0;
            }else {
            return 1;
            }
        }
    };
1、为什么“ o1.getBirthdate().isAfter(o2.getBirthdate()) ”不能用 “ > ” 运算符计算?
2、这里的 equals()与 == 的效果是否一样?
解决
1、因为Birthdate的实例中存了三个字段(year, month, dayofmonth),==不能一次比较三个数,所以要用java.time.LocalDate中提供的isAfter()方法来比较日期的先后顺序。
2、另外.equals()方法与运算符的效果是一样的,因为没有自己重写equals()方法,equals是来自Object自带的用运算符来计算的方法。
equals()方法如下:
@Override
public boolean equals(Object obj) {
    if (this == obj) {
        return true;
    }
    if (obj instanceof LocalDate) {
        return compareTo0((LocalDate) obj) == 0;
    }
    return false;
}
二、吐槽
今天讲课的节奏很好,有时间来消化之前留下的问题了,就是晚上自习的时候不知道怎么去复习。
					点赞(1)
				
    
