Java 矩阵重复提取
我有200列和80000行数据 行包含重复的数据 我只想从行中的重复数据中提取唯一的数据,但只在重复行中的列中保留最大值 我怎么做 ex) 以前 之后Java 矩阵重复提取,java,Java,我有200列和80000行数据 行包含重复的数据 我只想从行中的重复数据中提取唯一的数据,但只在重复行中的列中保留最大值 我怎么做 ex) 以前 之后 谢谢从给定的示例中,可以假设矩阵包含一列,用于标识行(rowId) 然后可以使用流API解决此任务: 使用Collectors.toMap 使用rowId列作为键,整行(int[])是一个值 对值执行合并功能以保持最大值 静态int[]filterMatrix(int[]arr){ 返回数组.stream(arr) .collect(collec
谢谢从给定的示例中,可以假设矩阵包含一列,用于标识行(rowId) 然后可以使用流API解决此任务:
Collectors.toMap
int[]
)是一个值静态int[]filterMatrix(int[]arr){
返回数组.stream(arr)
.collect(collector.toMap)(
a->a[0],//假设第一列包含rowId
a->a,
(a1,a2)->IntStream.range(0,a1.length)
.map(i->Math.max(a1[i],a2[i]))
.toArray()
))
.values()
.stream()//流-行流
.toArray(int[]]::新建);
}
测试(缩写):
int[]m=newint[]{
{1, 0, 0, 4, 5},
{1, 3, 0, 1, 0},
{2, 2, 0, 1, 1},
{3, 0, 7, 1, 8},
{3, 0, 6, 9, 17},
{3, 0, 0, 12, 1},
};
int[]max=filterMatrix(m);
对于(int[]r:max){
System.out.println(Arrays.toString(r));
}
输出:
[1, 3, 0, 4, 5]
[2, 2, 0, 1, 1]
[3, 0, 7, 12, 17]
欢迎来到StackOverflow。请给我们看看你的作品。您应该先自己解决问题。行中是否包含允许按此列分组的
id
列(例如第一列中的r1
,r3
)?
s1 s2 s3 .. s200
r1 3 0 4 .. 5
r2 2 0 0 .. 1
r3 0 9 6 .. 17
[1, 3, 0, 4, 5]
[2, 2, 0, 1, 1]
[3, 0, 7, 12, 17]