gpt4 book ai didi

java - 根据自定义比较器对整数数组进行排序

转载 作者:行者123 更新时间:2023-11-30 07:12:15 28 4
gpt4 key购买 nike

这很简单,但我显然遗漏了一些东西......

我有一个二维数组,其中包含从 BufferedImage 对象计算出的颜色值的整数表示。我还有一种方法可以根据整数值计算亮度值。

我想根据亮度值对行进行排序。但是,我得到了

sort(java.lang.Integer[], Comparator<? super Integer>) in Arrays cannot be applied
to (int[], IntComparator)

我的比较方法:

private class IntComparator implements Comparator<Integer>{
@Override
public int compare(Integer x, Integer y){
return (PhotoUtils.getBrightnessValue(x) <= PhotoUtils.getBrightnessValue(y)) ? x : y;
}
}

在我的 sortRow 方法中,我有

public void sortRow(int row) {
Arrays.sort(this.buffer[row], new IntComparator());
}

这里有什么问题?毕竟,我只是根据输入计算两个整数值并返回 < 0 或 > 0。

最佳答案

确保将 buffer 属性声明为 Integer[],因为您为 Integer 类型定义了比较器,而不是为int 类型 - 而接收 Comparatorsort() 方法将仅适用于对象类型的数组,不适用于基本类型的数组,例如作为 int

请注意 int[] 不能自动转换为 Integer[],可能需要显式创建一个新的 Integer[] 并将 int[] 元素复制到其中:

int[] myIntArray = ...;
Integer[] myIntegerArray = new Integer[myIntArray.length];
for (int i = 0; i < myIntArray.length; i++)
myIntegerArray[i] = myIntArray[i]; // autoboxing takes care of conversion

关于java - 根据自定义比较器对整数数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20509532/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com