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;
}
二、吐槽
今天讲课的节奏很好,有时间来消化之前留下的问题了,就是晚上自习的时候不知道怎么去复习。
近期评论