【问题标题】:How would I sort a 2D array in Java? [duplicate]如何在 Java 中对二维数组进行排序? [复制]
【发布时间】:2021-03-02 12:49:23
【问题描述】:

所以我在 Java 中有一个二维数组,它是一个字符串

String a[][] = new String[3][4];
a[0][0] = "John";
a[0][1] = "Doe";
a[0][2] = "B";
a[0][3] = "999";
a[1][0] = "Bob";
a[1][1] = "Smith";
a[1][2] = "Q";
a[1][3] = "420";
a[2][0] = "Name";
a[2][1] = "Here";
a[2][2] = "T";
a[2][3] = "123";

如何按字母顺序对行进行排序?

我尝试了Arrays.sort(a),但它只是抛出了错误。而且我觉得它会更复杂。

输出应该是:

Bob Smith Q 420
John Doe B 999
Name Here T 123

我已经有了正常打印的代码,只需要按行的字母顺序对其进行排序。

【问题讨论】:

  • 这能回答你的问题吗? sorting 2D array of String in java
  • 不,看起来它是根据数字而不是第一列中的第一个字母排序的。不过感谢您的建议!
  • 您只想对行进行排序?预期的输出是多少?
  • 预期输出是 [[Bob Smith Q 420][John Doe Q 420][Name Here T 123]],我已经设置了打印命令。
  • 哦,请看看我的回答是否有帮助。我测试了它似乎正在打印相同的输出

标签: java arrays sorting multidimensional-array


【解决方案1】:

你可以用流解决这个问题:

String[] result = Arrays.stream(a)
        .map(inner -> String.join(" ", inner))
        .sorted()
        .toArray(String[]::new);

【讨论】:

    【解决方案2】:

    如果你只想对行进行排序,我认为可以这样做:

    Arrays.sort(a, (o1, o2) -> {
        String firstO1Element = o1[0];
        String firstO2Element = o2[0];
        return firstO1Element.compareTo(firstO2Element);
    });
    

    这给出了以下输出:

    Bob Smith Q 420 
    John Doe B 999 
    Name Here T 123 
    

    【讨论】:

      【解决方案3】:

      试试这个:

      Arrays.sort(a, (b, c) -> b[0] - c[0]);
      

      【讨论】:

        猜你喜欢
        • 2019-12-11
        • 1970-01-01
        • 2014-03-02
        • 1970-01-01
        • 2021-07-14
        • 2013-05-26
        • 1970-01-01
        • 1970-01-01
        • 2016-04-23
        相关资源
        最近更新 更多