Java,按字母顺序对字符串的二维数组排序

时间:2020-05-20 11:36:44

标签: java arrays sorting multidimensional-array

请帮助,我在如何将字符串数组分为两列时遇到麻烦。 因此,我有两列:它们都包含一个字符串。我需要按字母顺序对第一列进行排序,而第二列不应乱序排列,因此,它应与排序后的第一列相对应。

任何人都可以在下面的代码中看到我需要在其中放置排序方法的地方:

 public static void main(String [] args){
String [][] emp = {{"Victor    ","ZSA"},{"Fred    ","HAN"},{"Drake   ","SOL"},{"Albert  ","TUR"},{"Eric    ","CAN"}};

    System.out.println("String 1:    String 2: "); 
    for(int i = 0; i < emp.length; i++) { 
        for(int j = 0; j < emp[0].length; j++){
            System.out.printf("%9s", emp [i][j]);
        }

        System.out.println();
        } 

输出应为: 阿尔伯特·图尔 德雷克SOL 埃里克·坎 韩 维克多ZSA

2 个答案:

答案 0 :(得分:1)

您可以创建一个实现接口Comparator的自定义比较器,该接口以String[]数组(二维行数组)为参数,并比较两个数组的第一个元素,如下所示:

public class CustomComparator implements Comparator<String[]> {

    @Override
    public int compare(String[] row1, String[] row2) {
        return row1[0].compareTo(row2[0]);
    }
}

在您可以使用main方法执行排序之后:

public static void main(String[] args) {
    String [][] emp = {{"Victor    ","ZSA"},{"Fred    ","HAN"},{"Drake   ","SOL"},{"Albert  ","TUR"},{"Eric    ","CAN"}};
    Arrays.sort(emp, new CustomComparator());
    System.out.println("String 1:    String 2: "); 
    for(int i = 0; i < emp.length; i++) { 
        for(int j = 0; j < emp[0].length; j++){
            System.out.printf("%9s", emp [i][j]);
        }

        System.out.println();
    } 

}

答案 1 :(得分:0)