我试图在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;
}
感谢。使用上面的代码,它不会因某种原因而排序。
答案 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]