发现这个问题是因为本来接口需要返回的是业务数据list和合计的object,正常情况下是这样的

本来是没什么问题的,但是当我把数据删到只剩一条时
数据变成了这样(返回数据的时候把reduce返回的object的name设置为 合计,结果原本数据的name也变成了 合计)


后来查阅文献(百度)后发现:在reduce计算的时候,如果stream中只有一个元素obj1,那么reduce返回的结果就是obj1,不会调用accumulator
类似这种

链接: 参考.
当使用Java Stream的reduce方法处理数据时,若数据只剩一个元素,reduce不会调用accumulator,导致结果出乎意料。博客详细讨论了这个问题,并通过一个实例展示了在数据量减少到一条时,原本数据的name被错误地设置为'合计'。解决这个问题需要理解reduce操作在单元素流中的工作原理。
发现这个问题是因为本来接口需要返回的是业务数据list和合计的object,正常情况下是这样的

本来是没什么问题的,但是当我把数据删到只剩一条时
数据变成了这样(返回数据的时候把reduce返回的object的name设置为 合计,结果原本数据的name也变成了 合计)


后来查阅文献(百度)后发现:在reduce计算的时候,如果stream中只有一个元素obj1,那么reduce返回的结果就是obj1,不会调用accumulator
类似这种

链接: 参考.

被折叠的 条评论
为什么被折叠?