英文:
Remove Duplicate from 2D array or Matrix
问题
我有以下的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.0 5.0 100
5.5 5.5 101
6.0 6.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数组,是否有更好的方法?请提供建议。
英文:
I have 2D array below
5.0 5.0 100 99
5.5 5.5 101 100
6.0 6.0 102 101
I want the expected output below
5.0 100 99
5.5 101 100
6.0 102 101
What I'd tried, I have passed the 1D array to my custom function which will convert 1d to 2D array, the final output is finalArr
, which I further pass to stream
function and map as list and find the ditinct
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)));
Output:
5.05.0 100
5.55.5 101
6.06.0 102
After some workaround, I've managed to get
5.0 100 99
5.5 101 100
6.0 102 101
by this code :
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)));
Now I want to collect it as 2D array, is there any better approach for the same, kindly suggest.
答案1
得分: 4
你必须对每个数组使用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]]
英文:
You have to use distinct()
for each array, you can solve your problem using :
String[][] result = Arrays.stream(finalArr)
.map(s -> Arrays.stream(s).distinct().toArray(String[]::new))
.toArray(String[][]::new);
Outputs
[[5.0, 100, 99], [5.5, 101, 100], [6.0, 102, 101]]
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论