使用stream/MapJava8从列表创建对象

使用stream/MapJava8从列表创建对象,java,java-stream,Java,Java Stream,我有一个物品清单。我想使用一个方法从此列表中创建单个对象,但不总是调用:personList.get(0)、personList.get(1)等。对象名应该是list元素中的人名 List<Person> personList = ...; List personList=。。。; 我希望遍历personList,并根据列表中每个对象的名称创建新对象 Person类包含带有getter的name属性 我如何才能做到这一点?只需流式处理列表并调用map操作,如下所示: person

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

List<Person> personList = ...;
List personList=。。。;
我希望遍历personList,并根据列表中每个对象的名称创建新对象

Person类包含带有getter的name属性


我如何才能做到这一点?

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

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

其中,
T
是您要创建的新类型元素,例如,
学生
员工
等。

只是一个简单的forEach循环:

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

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

您想返回一个Person对象只有名称的Person列表!或者到底是什么?你的问题不是很清楚。您能否提及示例列表输入和示例预期输出?你所说的“一个案例一个案例”是什么意思?在上述情况下,什么不起作用?我更新了描述,并删除了误导性代码。希望现在一切都清楚了。谢谢但是收款人正在收集一份清单。我的主要观点是遍历列表,并将每个元素作为一个新的Person对象。还是我错过了什么?谢谢@这正是代码所做的。遍历所有元素并用人名构建新对象。如果您不将新元素收集到列表中,那么您将在何处存储构建的新对象?有意义!谢谢