【发布时间】:2022-01-22 22:56:30
【问题描述】:
我对 Java 流很陌生。我有一个项目清单。我还有另一个包含两个属性的对象:
- 项目列表。
- 项目数。
一般的方法是我创建一个对象实例并设置它的属性,如下所示:
CustomObject myCustomObject = new CustomObject();
myCustomObject.setList(myList);
myCustomObject.setSize(myList.size());
我如何使用流的方法(如 map 或 flatmap)来实现相同的效果?
【问题讨论】:
-
我不知道你在问什么(或者它与 spring-boot 有什么关系)
-
把 Stream 想象成一个 List,你可以应用 map (更改为其他内容)和 filter (减少项目数)之类的函数,但这些函数直到最终收集才执行(toList) 或 forEach 或其他。这称为延迟执行。因此,如果您尝试发送数据,则不能像 List 一样传递 Stream。它更像是自己编写的 SQL 查询或程序,适用于数据序列
-
如果您有一个列表,您将执行 for 循环并为返回值创建另一个列表,如果您有一个 if 语句,这将等效于
map仅将一些项目放入返回值列表中,这将等同于filter -
var co = new CustomObject(); Stream.of(co).forEach(o -> { o.setList(myList); o.setSize(myList.size()); }。但是,我不知道你为什么想要这个。 -
顺便说一句,
CustomObject的列表和大小可以独立设置,我觉得很奇怪。
标签: java java-stream