Java 从二维阵列或矩阵中删除重复项

Java 从二维阵列或矩阵中删除重复项,java,arrays,java-stream,Java,Arrays,Java Stream,我在下面有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函数并映射为列表,然后找到ditinct String finalArr[][] = convert1DTo2DArray(arr3, 3,

我在下面有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
函数并映射为列表,然后找到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)));
输出:

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数组,是否有更好的方法,敬请建议。

对于每个数组,您必须使用
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]]