Java 基于自定义比较器的整数数组排序
这很简单,但我显然遗漏了一些东西 我有一个2D数组,其中包含从BuffereImage对象计算的颜色值的整数表示。我也有一种基于整数值计算亮度值的方法 我想根据亮度值对行进行排序。然而,我越来越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。请确保将
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