【问题标题】:Create object from list using stream/map java 8使用流/映射 java 8 从列表中创建对象
【发布时间】:2018-06-27 18:42:42
【问题描述】:

我有一个对象列表。我想用一个方法从这个列表中创建单个对象,而不是总是调用:personList.get(0)、personList.get(1) 等。对象名称应该是列表元素中的人名。

List<Person> personList = ...;

我想遍历 personList 并为列表中的每个对象按名称创建新对象。

Person 类包含带有 getter 的 name 属性。

我该怎么做?

【问题讨论】:

  • 你想返回一个 Person 对象只有名字的列表!或者到底是什么?
  • 你的问题不是很清楚。您能否提及示例列表输入和示例预期输出?你是什​​么意思“它是逐案工作的”?在上述情况下什么不起作用?
  • 我更新了描述,并删除了误导性代码。希望现在很清楚。谢谢!

标签: java java-stream


【解决方案1】:

只需流式传输列表并调用map 操作,如下所示:

personList.stream()
          .map(x -> new T(x.getName()))
          .collect(Collectors.toList());

T 是您要创建的新元素类型,例如StudentPersonEmployee 等。

【讨论】:

  • 但收集正在收集到列表中。我的主要观点是遍历列表并将每个元素作为一个新的 Person 对象。还是我错过了什么?谢谢!
  • @arena 这正是代码在做什么。遍历所有元素并使用人名构造新对象。如果您不将新元素收集到列表中,那么您会将构造的新对象存储在哪里?
  • 有道理!谢谢!
【解决方案2】:

只是一个简单的 forEach 循环:

personList.forEach(p -> {
  T newObject = new T(p.getName());
  // Do what you need to do with each new object
});

如果你想做一些更复杂的事情,那么 Aonminè 的答案可能就是你真正需要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 2015-02-11
    • 2015-12-27
    • 1970-01-01
    相关资源
    最近更新 更多