如何使用Java Arrays.sort对二维数组按第二列排序?
Java二维double数组按第二列排序实现方案
你可以使用Arrays.sort()方法,结合自定义的Comparator来实现按二维数组的第二列(索引为1的列)进行升序排序,具体代码如下:
import java.util.Arrays; import java.util.Comparator; public class Sort2DArray { public static void main(String[] args) { double[][] myArr = { {1, 5}, {13, 1.55}, {12, 100.6}, {12.1, 0.85} }; // 按第二列升序排序 Arrays.sort(myArr, new Comparator<double[]>() { @Override public int compare(double[] o1, double[] o2) { // 比较两个数组的第二列元素 return Double.compare(o1[1], o2[1]); } }); // 打印排序后的结果 for (double[] row : myArr) { System.out.println(row[0] + " " + row[1]); } } }
关键说明:
Arrays.sort()支持传入自定义比较器,以此指定排序规则- 在
compare方法中,通过o1[1]和o2[1]获取每行的第二列元素,用Double.compare()处理double类型比较,避免直接减法带来的精度问题 - 若需降序排序,只需将
Double.compare(o1[1], o2[1])改为Double.compare(o2[1], o1[1])
如果你使用Java 8及以上版本,还可以用Lambda表达式简化代码:
Arrays.sort(myArr, (o1, o2) -> Double.compare(o1[1], o2[1]));
或者用更简洁的方法引用写法:
Arrays.sort(myArr, Comparator.comparingDouble(a -> a[1]));
以上写法都能实现你需要的按第二列升序排序的效果,运行后输出结果将与你期望的一致。
内容的提问来源于stack exchange,提问作者CourierDude
相关产品推荐
相关产品推荐

