我正在尝试使用Comparator在排序后跟踪数组值索引。我已经看到了其他地方的实现,但是我很难让它与我的代码协同工作。
我用我的索引值在[X] [0]和[X] [1]填充了我的2d数组中的随机值。
import java.util.Arrays;
import java.util.Comparator;
public class ComparatorTest{
static double testArray[][] = new double [10][10];
public static void main(String[] args) {
fillArray();
setIndexVals();
}
public static void fillArray(){
for(int row = 0; row < 10; row++){
testArray[row][0] = Math.random();
System.out.println(testArray[row][0]);
}
}
public static void setIndexVals(){
for (int row = 0; row < testArray.length; row++){
testArray[row][1]= row + 1;
System.out.println(testArray[row][1]);
}
}
public static void sortArray(){
Arrays.sort(testArray, new Comparator<int[]>(){
public int compare(double[] value, double[] index){
return value[0]-index[0];
}
});
}
}
答案 0 :(得分:0)
替换
# Enable CSS source maps for development
sourcemap = true
与
public int compare(double[] value, double[] index){
return value[0]-index[0];
}
我选择重命名public int compare(double[] value1, double[] value2){
return Double.compare(value1[0], value2[0]);
}
方法中的参数,因为它确实在2D数组中包含两个数组,而不是值和索引数组。如果您想比较索引,那么您可以比较compare
和value1[1]
。
但真正的解决方法是改变value2[1]
因为你应该很少使用精确的比较来比较双打。