java - Comparable接口(interface)——如何比较int类型?

标签 java comparable

我有两门课:

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/

相关文章:

java - 通用 Comparable 出现编译器错误

java - 如何对一个对象(实际上是一个数组)进行排序

java - Tapestry 5.4 列出 webapp 文件夹中的所有图像

java - 无法获取静态图像,Tomcat 8.0.24

java - 为什么不考虑输入的第一个值?

java - 为什么 LocalDate 没有实现 Comparable<LocalDate>?

java - 类似泛型的局部变量

java - 为什么按位置读取 JDBC 结果集比按名称读取 JDBC 结果集快多少?

java - 如何快速计算 2^x?

哈希表和可比较对象中使用的 Java Null 对象