为了账号安全,请及时绑定邮箱和手机立即绑定

二维数组按输入然后第二个排序

二维数组按输入然后第二个排序

胡子哥哥 2021-03-31 12:10:41
这可能是一个相当基本的问题,但我似乎无法在线找到我需要的答案。但是,对二维数组排序的最佳方法是什么?我有一个预填充的二维数组'mainArr [] []',其中包含数据:John Doe - 678DGHJ,SportLisa Parker - 432KH3,CarJohn Doe - 678DGHJ, DrivePeter Bear 4HJ4K3,BusJohn Doe - 4HJK4,Loose逗号是数组中维之间的分隔符。如何首先按数组中的列对其进行排序,然后按数组第二部分中的值对其进行排序。上面排序的数据将变为:John Doe - 4HJK4,LooseJohn Doe - 678DGHJ,DriveJohn Doe - 678DGHJ,SportLisa Parker - 432KH3,CarPeter Bear 4HJ4K3,Bus所以排序数组中的数据mainArr[0][0] 等于mainArr[John Doe - 4HJK4][Loose]
查看完整描述

1 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

您可以使用Comparator如下所示对数组进行排序,


import java.util.Arrays;

import java.util.Comparator;


public class Main {

    public static void main(String args[]) {

        String[][] mainArr = new String[][] {{"John Doe - 678DGHJ", "Sport"}, {"Lisa Parker - 432KH3", "Car"}, {"John Doe - 678DGHJ", "Drive"}, {"Peter Bear 4HJ4K3", "Bus"}, {"John Doe - 4HJK4", "Loose"}};


        Arrays.sort(mainArr, new Comparator<String[]>() {

            @Override

            public int compare(String[] entry1, String[] entry2) {

                if (entry1[0].equals(entry2[0])) {

                    return entry1[1].compareTo(entry2[1]);

                }

                return entry1[0].compareTo(entry2[0]);

            }

        });


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

            System.out.println(mainArr[i][0] + ", " + mainArr[i][1]);

        }

    }


查看完整回答
反对 回复 2021-04-14
  • 1 回答
  • 0 关注
  • 186 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信