当前位置:   article > 正文

Java 二维数组排序 —— Arrays.sort 案例_java array.sort 二维数组

java array.sort 二维数组

二维数组例子,直接复制去吧。

 		int[][] arr = new int[8][];
        arr[0] = new int[]{9, 12};
        arr[1] = new int[]{1, 10};
        arr[2] = new int[]{4, 11};
        arr[3] = new int[]{8, 12};
        arr[4] = new int[]{3, 9};
        arr[5] = new int[]{6, 9};
        arr[6] = new int[]{6, 7};
        arr[7] = new int[]{1, 5};

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

先对数组进行排序
以x start 升序
如果 x start 相同,以 x end 升序

        Arrays.sort(points, (o1, o2) -> {
            if (o1[0] == o2[0]) {
                return o1[1] - o2[1];
            } else {
                return o1[0] - o2[0];
            }
        });
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述

这个排序有个弊端。对[[-2147483646,-2147483645],[2147483646,2147483647]]这个测例会溢出。
这个是二维数组的单关键字升序

        Arrays.sort(points, Comparator.comparingInt(a -> a[0]));
  • 1

在这里插入图片描述

第三种方式是第一种的改进,防止溢出的。

        Arrays.sort(points, (o1, o2) -> {
            if (o1[0] == o2[0]) {
                // 升序  o1[1]-o2[1]   <0
                // 即  o1[1]<o2[1]
                // Integer.compare(o1[1], o2[1])
                // 如果 o1[1]<o2[1]
                // Integer.compare(o1[1], o2[1]) 返回 -1 也<0
                return Integer.compare(o1[1], o2[1]);
            } else {
                return Integer.compare(o1[0], o2[0]);
            }
        });
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在这里插入图片描述

二维数组根据不同列进行升序降序选择。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/867378
推荐阅读
相关标签
  

闽ICP备14008679号