我下面有2D阵列
5.0 5.0 100 99
5.5 5.5 101 100
6.0 6.0 102 101
我想要下面的预期输出
5.0 100 99
5.5 101 100
6.0 102 101
我尝试过的是,我已将1D数组传递给自定义函数,该函数会将1d转换为2D数组,最终输出为finalArr
,我将其进一步传递给stream
函数并映射作为列表并找到不同的
String finalArr[][] = convert1DTo2DArray(arr3, 3, 4);
Arrays.stream(finalArr)
.map(Arrays::asList)
.distinct()
.forEach(row -> System.out.printf("%-3s%-7s%s\n", row.get(0), row.get(1), row.get(2)));
输出:
5.05.0 100
5.55.5 101
6.06.0 102
一些解决方法后,我设法做到了
5.0 100 99
5.5 101 100
6.0 102 101
通过此代码:
Arrays.stream(finalArr)
.map(Arrays::asList)
.distinct()
.forEach(row -> System.out.printf("%-5s%-7s%s\n", row.get(1), row.get(2), row.get(3)));
现在,我想将其收集为2D数组,请提出相同的更好的方法。
答案 0 :(得分:3)
每个数组必须使用distinct()
,您可以使用:
String[][] result = Arrays.stream(finalArr)
.map(s -> Arrays.stream(s).distinct().toArray(String[]::new))
.toArray(String[][]::new);
输出
[[5.0, 100, 99], [5.5, 101, 100], [6.0, 102, 101]]