前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Java 二维数组按指定列排序(一)

Java 二维数组按指定列排序(一)

作者头像
用户7886150
修改2020-12-14 14:08:40
修改2020-12-14 14:08:40
2.1K0
举报
文章被收录于专栏:bit哲学院bit哲学院

参考链接: Java中的final数组 | Final arrays

Java 二维数组按指定列排序(一) 

简介: 在做项目时,需要对一个二维数组,按照指定的列进行排序。 

Java 二维数组按指定列排序(二)升序 or 降序 

效果图:  代码实现: 

    public static void main(String[] args) {

        int[][] nums = initialArray(5, 3);

        System.out.println("排序前:");

        printArr(nums);

        System.out.println("排序后:");

        // 先根据第1列比较,若相同则再比较第0列

        sortByColumn(nums, new int[] {1, 0});

        printArr(nums);

    }

    /**

     * 打印二维数组

     * @param nums 数组

     */

    private static void printArr(int[][] nums) {

        for (int i = 0; i < nums.length; i++) {

            System.out.println(Arrays.toString(nums[i]));

        }

    }

    /**

     * 构造一个row * col的二维数组

     * @param row 二维数组的行数

     * @param col 二维数组的列数

     * @return 构造的二维数组

     */

    private static int[][] initialArray(int row, int col) {

        int[][] arr = new int[row][col];

        for (int i = 0; i < row; i++) {

            for (int j = 0; j < col; j++) {

                // 0-100的随机数

                arr[i][j] = (int) (Math.random() * 100);

            }

        }

        return arr;

    }

    /**

     * 按列排序

     * @param ob 待排序的数组

     * @param order 列排序的优先级, 如:new int{1, 2} 先根据第一列比较,若相同则再比较第二列

     */

    private static void sortByColumn(int[][] ob, final int[] order) {

        Arrays.sort(ob, new Comparator<Object>() {

            public int compare(Object o1, Object o2) {

                int[] one = (int[]) o1;

                int[] two = (int[]) o2;

                for (int i = 0; i < order.length; i++) {

                    int k = order[i];

                    if (one[k] > two[k]) {

                        return 1;

                    } else if (one[k] < two[k]) {

                        return -1;

                    } else {

                        continue;

                    }

                }

                return 0;

            }

        });

    }

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档