Java 我可以使用compareTo对整数值和双数值进行排序吗?

Java 我可以使用compareTo对整数值和双数值进行排序吗?,java,Java,我可以使用compareTo对整数值和双数值进行排序吗?我的系统给了我一个错误,我不能在原语类型int上调用compareTo(int)。有什么想法吗 代码: 嗯,编译器是对的:)您不能直接调用compareTo。但是,根据您使用的Java版本,您可以使用(在1.7中介绍)和(在1.4中介绍) 例如: return Integer.compare(o1C.getPrice(), o2C.getPrice()); 如果您不使用1.7,但仍希望使用内置方法,则可以使用: 。。。但这将使用不必要的拳

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

代码:


嗯,编译器是对的:)您不能直接调用
compareTo
。但是,根据您使用的Java版本,您可以使用(在1.7中介绍)和(在1.4中介绍)

例如:

return Integer.compare(o1C.getPrice(), o2C.getPrice());
如果您不使用1.7,但仍希望使用内置方法,则可以使用:

。。。但这将使用不必要的拳击。考虑到对一个大集合进行排序可以执行相当多的比较,这并不理想。在您准备好使用1.7之前,您可能需要自己重新编写
compare
。非常简单:

public static int compare(int x, int y) {
    return x < y ? -1
         : x > y ? 1
         : 0;
}
公共静态整数比较(整数x,整数y){
返回xy?1
: 0;
}

好吧,编译器是对的:)你不能直接调用
compareTo
。但是,根据您使用的Java版本,您可以使用(在1.7中介绍)和(在1.4中介绍)

例如:

return Integer.compare(o1C.getPrice(), o2C.getPrice());
如果您不使用1.7,但仍希望使用内置方法,则可以使用:

。。。但这将使用不必要的拳击。考虑到对一个大集合进行排序可以执行相当多的比较,这并不理想。在您准备好使用1.7之前,您可能需要自己重新编写
compare
。非常简单:

public static int compare(int x, int y) {
    return x < y ? -1
         : x > y ? 1
         : 0;
}
公共静态整数比较(整数x,整数y){
返回xy?1
: 0;
}

在当前代码中;更简单的解决方案是只改变这一行,一切都会好起来:

return o1C.getPrice() - o2C.getPrice() ;

因为方法compare()只有以下要求,即。如果两个值相等,则返回零;否则为正数/负数。

在当前代码中;更简单的解决方案是只改变这一行,一切都会好起来:

return o1C.getPrice() - o2C.getPrice() ;
因为方法compare()只有以下要求,即。如果两个值相等,则返回零;否则为正数/负数。

更改代码

int price;  

因为诸如
int
之类的基元类型不支持任何方法,例如
compareTo()

更改代码

int price;  


因为诸如
int
之类的基元类型不支持任何方法,例如
compareTo()

步骤1:按姓氏排序列表(用于字符串值)

步骤2:打印列表中的所有元素

for (People ppl : peopleList) {
    System.out.print(ppl.getFirstName()+" - "+ppl.getLastName());
}
for (People ppl : peopleList) {
    System.out.println(ppl.getAge());
}
步骤1:按年龄对列表排序(对于int值)

步骤2:打印列表中的所有元素

for (People ppl : peopleList) {
    System.out.print(ppl.getFirstName()+" - "+ppl.getLastName());
}
for (People ppl : peopleList) {
    System.out.println(ppl.getAge());
}

步骤1:按姓氏对列表排序(对于字符串值)

步骤2:打印列表中的所有元素

for (People ppl : peopleList) {
    System.out.print(ppl.getFirstName()+" - "+ppl.getLastName());
}
for (People ppl : peopleList) {
    System.out.println(ppl.getAge());
}
步骤1:按年龄对列表排序(对于int值)

步骤2:打印列表中的所有元素

for (People ppl : peopleList) {
    System.out.print(ppl.getFirstName()+" - "+ppl.getLastName());
}
for (People ppl : peopleList) {
    System.out.println(ppl.getAge());
}

根据错误消息:
int
是原语,因此不是对象。
compareTo
方法仅适用于对象。根据错误消息:
int
是原语,因此不是对象。
compareTo
方法仅适用于对象。公共静态int-compare(int-x,int-y){return x-y;}@Deepak:绝对不行。如果由于溢出,
y
是一个非常大的正数,
x
是一个非常大的负数,那么这将是一个失败的实现。如何使用静态方法?您可以添加代码来支持使用price1和price2吗?@summers:您使用这两个价格调用静态方法,返回值是比较值。。。你在尝试时遇到了什么问题?比如;'整数price1=o1C.getPrice();整数price2=o2C.getPrice();返回比较(价格1,价格2);'publicstaticintcompare(intx,inty){returnx-y;}@Deepak:绝对不是。如果由于溢出,
y
是一个非常大的正数,
x
是一个非常大的负数,那么这将是一个失败的实现。如何使用静态方法?您可以添加代码来支持使用price1和price2吗?@summers:您使用这两个价格调用静态方法,返回值是比较值。。。你在尝试时遇到了什么问题?比如;'整数price1=o1C.getPrice();整数price2=o2C.getPrice();返回比较(价格1,价格2);'