一哥:关于数据处理的问题
来源:8-7 Jackson和fastJson到底有啥区别?
weibo_拥有写轮眼的大帅B_0
2020-09-19
一哥你好啊,最近遇到一个技术问题
一哥,怎么在java中使用stream 将三列中每列相同的id进行去重 ,并将其对应的列进行总和计算
例如:purchaseSaleId列中的1 对应 purchaseNumber列中的800 那么只能保留一条对应的 1->800的记录其余的去重
最终算出purchaseNumber列中的总和
一哥我在sql中无法实现 所以想问下使用stream有没有办法实现
1回答
-
张勤一
2020-09-21
大帅你好:
你这里所说的业务场景,确实使用 SQL 语句是不好实现的,使用简单的 Java 语言逻辑却是很容易的。你所说的怎么使用 stream 去实现,其实,主要的原因是不能够很好的理解 stream 及 lambda 的语法。
我这里给你说一说 stream 的语法,你可以将 stream 理解为集合中的元素经过管道,进行筛选, 排序,聚合等操作,最终完成收集的过程。元素流在管道中经过中间操作(intermediate operation)的处理,最后由最终操作(terminal operation)得到前面处理的结果。
所以,stream 对元素流的操作就是一系列函数(或者说过程)的组合,你这里的需求也是一样的,需要你自己去编写 filter 的逻辑过滤元素。不过,如果你不熟悉,很难写得出来。
我个人建议是先使用你熟悉的方式,比如说 for、foreach 循环,写出正确的逻辑;再考虑使用 stream + lambda 的方式改写它。而不要一次性的完成自己不熟悉的语法过程。
我是勤一,致力于将这门课程的问答区打造为 Java 知识体系知识库,Java 知识体系 BBS!共同建造、维护这门课程,我需要每一个你!
10
相似问题