Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基于自定义比较器的整数数组排序_Java_Sorting_Comparator - Fatal编程技术网

Java 基于自定义比较器的整数数组排序

Java 基于自定义比较器的整数数组排序,java,sorting,comparator,Java,Sorting,Comparator,这很简单,但我显然遗漏了一些东西 我有一个2D数组,其中包含从BuffereImage对象计算的颜色值的整数表示。我也有一种基于整数值计算亮度值的方法 我想根据亮度值对行进行排序。然而,我越来越 sort(java.lang.Integer[], Comparator<? super Integer>) in Arrays cannot be applied to (int[], IntComparator) 这里的问题是什么?毕竟,我只是基于输入计算两个整数值,并返回0。请确保将

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

我有一个2D数组,其中包含从BuffereImage对象计算的颜色值的整数表示。我也有一种基于整数值计算亮度值的方法

我想根据亮度值对行进行排序。然而,我越来越

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

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

请确保将
缓冲区
属性声明为
整数[]
,因为您为
整数
类型定义了比较器,而不是为
int
类型和
排序()
接收
比较器的方法将仅适用于对象类型的数组,而不适用于基本类型的数组,如
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
int[]myIntArray=。。。;
整数[]myIntegerArray=新整数[myIntArray.length];
for(int i=0;i数组.sort(T[],Comparator)
是一种通用方法,其中第一个和第二个参数都使用类型变量。由于原语不能用作泛型类型参数,例如
Comparator
,因此不能将
int[]
作为第一个参数传递


您需要传递一个
整数[]

您正在合并int[]和Integer[]。请注意,您可以从int到Integer自动装箱/自动取消装箱,反之亦然,但不能从Integer[]到int[],反之亦然。
public void sortRow(int row) {
  Arrays.sort(this.buffer[row], new IntComparator());
}
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