我可以用<
和>
替换什么,因为我想比较一个以下的字符串是compare int,因此得到了解决此问题且不改变功能的任何解决方案。
public int compareTo(Object o) {
Patient p = (Patient) o;
if (this.getCategory() < p.getCategory())
return -1;
if (this.getCategory() > p.getCategory())
return 1;
else {
if (this.getTimeArrived().before(p.getTimeArrived()))
return -1;
if (this.getTimeArrived().after(p.getTimeArrived()))
return 1;
}
return 0;
}
这个怎么样?可以将>&<更改为另一个解决方案,因为我想与字符串进行比较
import java.util.Comparator;
public class PatientComparator implements Comparator<Patient>{
public int compare(Patient p1, Patient p2) {
if (p1.getCategory() < p2.getCategory())
return -1;
if (p1.getCategory() > p2.getCategory())
return 1;
else { if (p1.getTimeArrived().before(p2.getTimeArrived()))
return -1;
if (p1.getTimeArrived().after(p2.getTimeArrived()))
return 1;
}
return 0;
}
}
答案 0 :(得分:1)
根据您提供的其他信息(currently inside an answer)div p span
返回getCategory()
,而String
返回getTimeArrived()
。您的目标似乎是:按“类别”进行比较,如果相等,则按“到达时间”进行比较。
java.util.Date
和String
都实现了Comparable
接口,因此您可以执行以下操作:
Date
您还可以创建一个Comparator
。
public int compareTo(Patient other) {
// This code doesn't handle nulls
int result = getCategory().compareTo(other.getCategory());
if (result == 0) {
result = getTimeArrived().compareTo(other.getTimeArrived());
}
return result;
}
此外,您正在创建一个Comparator<Patient> c = Comparator.comparing(Patient::getCategory)
.thenComparing(Patient::getArrivedTime);
方法,而没有compareTo
实现Patient
。您应该将其更改为:
Comparable
然后覆盖public class Patient implements Comparable<Patient> { /* code */ }
中声明的compareTo
方法。这也迫使您使用Comparable
而不是compareTo(Patient)
。