【问题标题】:Java streams create an object out of list [closed]Java流从列表中创建一个对象[关闭]
【发布时间】:2022-01-22 22:56:30
【问题描述】:

我对 Java 流很陌生。我有一个项目清单。我还有另一个包含两个属性的对象:

  1. 项目列表。
  2. 项目数。

一般的方法是我创建一个对象实例并设置它的属性,如下所示:

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


【解决方案1】:

// 我假设你有一组列表或列表列表? // 在这种情况下,你可以通过'map'操作创建一个CustomObjects列表。

List<List<T>> myLists;
List<CustomObject> customObjects;

List<CustomObject> customObjList = myLists.stream()
                .map(list -> new CustomObject(list, list.size()))
                .collect(Collectors.toList());

但是,这个问题很模糊,所以不能保证。 另外,spring-boot 和 this 之间没有联系。

【讨论】:

    猜你喜欢
    • 2021-01-25
    • 2023-03-14
    • 2018-08-20
    • 1970-01-01
    • 2023-01-24
    • 2022-01-05
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    相关资源
    最近更新 更多