【问题标题】:How to make integers comparable如何使整数具有可比性
【发布时间】:2018-03-31 00:38:21
【问题描述】:

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

不兼容的类型: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[] 更改为Integer[]
  • 或者使用&lt;&gt;比较整数。

标签: java comparable compareto


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 是的,有一个原因为什么java.util.Arrays有8个sort(array)方法的重载。
  • 自己实现排序还是个不错的练习,虽然bubble不是很厉害哈哈。
  • 当然,他只是不应该期望一个方法来对对象数组和 primitive 数组进行排序。
猜你喜欢
  • 2011-06-24
  • 1970-01-01
  • 1970-01-01
  • 2020-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-08
相关资源
最近更新 更多