我有两门课:
First implements Serializable {
int month;
int day;
int hour;
int minute;
}
Second implements Serializable, Comparable<?> {
First object;
int temperature;
}
我必须将第二类对象写入二进制文件。我知道他们需要实现可序列化接口(interface)才能做到这一点,我对此没有问题。问题是我必须创建此代码的一个版本,以便可以按第一类中保存的日期按时间顺序将第二类的新对象添加到集合中。所以我需要比较整数(月,日,小时,分钟)。我知道我必须在第二类中声明方法 CompareTo 。如果我必须比较字符串,它会是这样的(如果分钟是字符串):
public int compareTO(Second object) {
return minute.compareTo(object.object.minute);
}
就这样完成了。但我应该如何处理这些整数呢? 那么“?”的地方应该写什么呢?在代码中?
最佳答案
需要定义您的类
class Second implements Serializable, Comparable<Second> {
public int compareTo(Second other) {
在 Java 7 中你可以使用
return Integer.compare(minute, other.minute);
或者对于多个字段,您可以执行
int cmp = Integer.compare(month, other.month);
if (cmp != 0) return cmp;
cmp = Integer.compare(days, other.days);
if (cmp != 0) return cmp;
cmp = Integer.compare(hours, other.hours);
if (cmp != 0) return cmp;
return Integer.compare(minutes, other.minutes);
对于早期的 Java 系统
return Double.compare(minute, other.minute);
或者
return minute > other.minute ? +1 : minute < other.minute ? -1 : 0;
在这种情况下,如果您知道整数的范围小于 20 亿,即不会溢出,则可以使用减法
return minute - other.minute; // if you know overflow is not possible.
关于java - Comparable接口(interface)——如何比较int类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21960201/