我尝试根据第一个值对 2D double 组 (double[][]) 进行排序。 例如:{1.0226342823592962,0.0}, {1.0395582845873155,1.0} 从最大的值开始。 这是我使用的代码(java生成了一半)
java.util.Arrays.sort(indexMatrix, new java.util.Comparator<double[]>() {
@Override
public int compare(double[] o1, double[] o2) {
// TODO Auto-generated method stub
return 0;
}
});
但是我的“indexMatrix”之后没有改变。我认为这与 public int Compare 有关,因为这些值彼此非常接近,如果将它们转换为 int,它们将全部为 1 并且无法排序。还是别的什么?
最佳答案
为什么要将它们转换为整数?只需使用 Double.compareTo(Double)
排序方法中的方法:
public static void main(String[] args) {
double[][] indexMatrix = new double[][] {
new double[] { 1.02, 100 },
new double[] { 1.03, 123 },
new double[] { 1.01, 321 } };
Arrays.sort(indexMatrix, new Comparator<double[]>() {
@Override
public int compare(double[] o1, double[] o2) {
return Double.compare(o2[0], o1[0]);
}
});
for (double[] d : indexMatrix)
System.out.println(Arrays.toString(d));
}
输出:
[1.03, 123.0]
[1.02, 100.0]
[1.01, 321.0]
关于java - 对二维 double 组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16979325/