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

时间:2019-01-05 05:02:18

标签: java

这可能是一个相当基本的问题,但是我似乎找不到在线上需要的答案。

但是,对二维数组进行排序的最佳方法是什么?

我有一个预填充的二维数组'mainArr [] []',其中包含数据:

John Doe - 678DGHJ,Sport
Lisa Parker - 432KH3,Car
John Doe - 678DGHJ, Drive
Peter Bear 4HJ4K3,Bus
John Doe - 4HJK4,Loose

逗号是数组中维之间的分隔符。 如何首先按数组中的列对其进行排序,然后按数组第二部分中的值对其进行排序。

上面排序的数据将变为:

John Doe - 4HJK4,Loose
John Doe - 678DGHJ,Drive
John Doe - 678DGHJ,Sport
Lisa Parker - 432KH3,Car
Peter Bear 4HJ4K3,Bus

所以

数组中的排序数据
mainArr[0][0] 

将等于

mainArr[John Doe - 4HJK4][Loose]

1 个答案:

答案 0 :(得分:2)

您可以使用如下所示的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]);
        }
    }
相关问题