一哥:关于数据处理的问题

来源: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!共同建造、维护这门课程,我需要每一个你!

1
0

Java实操避坑指南 SpringBoot/MySQL/Redis错误详解

掌握业务开发中各种类型的坑,,Java web开发领域通用

466 学习 · 204 问题

查看课程