tagIdList channel tagId 代购数量 现货数量
12,13 "现货" -> 12 1 0
13,14 "代购" 13 1 1
14 0 1
最初的想法是上面的这样的, 但是想了半天也没有结果, 于是拆解为下面的
tagIdList channel tagId channel tagId 代购数量 现货数量
12,13 "现货" -> 12 10 -> 12 1 0
13,14 "代购" 13 10 13 1 1
13 11 14 0 1
14 11
第二步到第三步可以用 groupBy + count 解决, 但是第一步到第二部实在是想不到了, 各位大佬有没有什么好的想法
对,其实就是如@_TNT_ 说得那样的操作流程,其实这个问题本质上就是一个
stream
里flatMap
操作,我个人喜欢叫 压平代码大体实现如下面所示
总的来说就是换成了
tagId
和channel
之间映射关系的stream
,然后再做groupBy
,如果你不喜欢自己创建这个PairData
,可以用一个Java8
函数式编程的增强库vavr
,里面有元组概念Tuple
,也支持更多stream
上更多的操作,所以这个PairData
类你可以用元组去代替它,比如以上仅供参考哈