如何使用Arrays.sort对java中的2d String数组中的每一行进行排序?

时间:2016-09-17 17:38:25

标签: java arrays

我试图在java中对每行2d String数组进行排序。

示例

例如,如果数组包含:

ZCD
BFE
DZA

我希望将其排序为:

CDZ
BEF
ADZ

代码

private String[] commonCollections;

private int comparisons = 0;

public Comparable[] findCommonElements(Comparable[][] collections){

    for(int i = 0; i < collections.length; i++){
        Arrays.sort(collections[i]);
    }

    for(int i = 0; i <collections[0].length; i++){
        System.out.print(collections[0][i] + "\n");
    }

    return commonCollections;
}

感谢。使用上面的代码,它不会因某种原因而排序。

2 个答案:

答案 0 :(得分:2)

你的排序似乎很好。你打印的方式就是问题。

这是你想要的吗?

public class Main {


    public  static Comparable[][] findCommonElements(Comparable[][] collections){


        for(int i = 0; i < collections.length; i++){
            Arrays.sort(collections[i]);

        }

        return collections;
    } 

   public static void main(String[] args) {

    Character [][]input= {{'Z','C','D'},{'B','F','E'},{'D','Z','A' }};

    Comparable[][] output = findCommonElements(input);

    for(int i = 0; i <output.length; i++){
        System.out.print(Arrays.toString(output[i]) + "\n");
    }     
  }
}

产生此输出:

[C,D,Z] [B,E,F] [A,D,Z]

答案 1 :(得分:0)

您几乎已经完成了,您可以通过调试来修复代码。

这是一种使用java8流的方法

    char[][] arr = { { 'Z', 'C', 'D' }, { 'B', 'F', 'E' }, { 'D', 'Z', 'A' } };
    char[][] sorted = IntStream.range(0, arr.length).mapToObj(i -> arr[i]).peek(x -> Arrays.sort(x)).toArray(char[][]::new);
    for (char[] js : sorted)
        System.out.println(Arrays.toString(js));

输出

[C, D, Z]
[B, E, F]
[A, D, Z]