java - 如何使整数具有可比性

标签 java comparable compareto

我正在尝试使用可比接口(interface)对随机生成的数组进行排序,但我收到错误消息:

不兼容的类型:int[] 无法转换为 Comparable[]

int [] list;
list = new int[n];

for(int i=0;i<n;i++){
    list[i]=(int)(1+n*Math.random());
}
sortingoutsorts.bubble(list);
}
private static void swap(Object [] list, int x, int y)
{
    Object temp=list[x];
    list[x]=list[y];
    list[y]=temp;
}
public static void bubble(Comparable [] list)
{
    boolean done=false;
    while(!done)
    {
        done=true;
        for(int i=0; i+1<list.length; i++)
            if(list[i].compareTo(list[i+1])>0)
            { swap(list,i,i+1); done=false; }
    }
}

最佳答案

int 是原始数据类型,您不能在原始数据类型上实现 Comparable。你想改用它的 Wrapper 类,Integer ,它已经实现了 Comparable。

但是,如果您不想更改变量的类型,您可能会更改

if(list[i].compareTo(list[i+1])>0)

if(list[i] > list[i+1])

并更改气泡签名以接受任何 int 数组。

关于java - 如何使整数具有可比性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49583113/

相关文章:

java - 说 "Comparable affects the original class but Comparator doesnt"是什么意思

java - 覆盖 compareTo 方法以便按字符串值对对象进行排序

java - 如何在 toString 中设置方法的结果

c# - 如何测试一个充满常量的类

Java 使用 Comparable 和多个排序标准对对象进行排序

java - 收款中断

java - 在 Java 和 C 之间传递数据

java - UseCMSCompactAtFullCollection 可以在Sun JDK6 中使用吗?

java - 使用对象的 float 属性的 compareTo() 方法。它是如何使用的,为什么?

java - 使用数组按姓名和分数对学生进行排序