java - 我可以使用compareTo 对整数和 double 值进行排序吗?

标签 java

我可以使用compareTo对整数和 double 值进行排序吗?我的系统给我一个错误,无法在基本类型 int 上调用compareTo(int)。有什么想法吗?

代码:

public int compare(Object o1, Object o2) {  
Record o1C = (Record)o1;
Record o2C = (Record)o2;                
return o1C.getPrice().compareTo(o2C.getPrice());
}

class Record
    public class Record {
    String name;
    int price;    

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public int getPrice() {
        return price;
    }
    public void setPrice(int price) {
        this.price = price;
    }
}

最佳答案

好吧,编译器是对的:)你不能直接调用compareTo。但是,根据您使用的 Java 版本,您可以使用 Integer.compare (1.7 中引入)和 Double.compare (1.4中引入)。

例如:

return Integer.compare(o1C.getPrice(), o2C.getPrice());

如果您没有使用 1.7,但仍想使用内置方法,您可以使用:

Integer price1 = o1C.getPrice();
Integer price2 = o2C.getPrice();
return price1.compareTo(price2);

...但这会使用不必要的拳击。鉴于对大型集合进行排序实际上可以执行大量比较,这并不理想。在您准备好使用 1.7 之前,可能值得您自己重写 compare。非常简单:

public static int compare(int x, int y) {
    return x < y ? -1
         : x > y ? 1
         : 0;
}

关于java - 我可以使用compareTo 对整数和 double 值进行排序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35372377/

相关文章:

java - 在java中实现PriorityQueue的最佳方法是什么?

java - 如何在 RapidMiner 扩展中记录第 3 方输出?

java - 在java中存储另一个类的数组

java - 输入和循环

java - java中有线程安全且元素唯一的队列吗?

java - Android Studio 无法解析导入 org.junit.Before 中的符号 'Before'

Java:创建新实例

java - 为什么我的 ArrayList 会出现 ArrayIndexOutOfBoundsException

java - android fragment 的最佳实践?

java - JPA加入spring boot应用