在Java 8中是否可以编写如下代码:

List<A> aList = getAList();
List<B> bList = new ArrayList<>();

for(A a : aList) {
    bList.add(a.getB());
}

我认为应该混合以下各项:
aList.forEach((b -> a.getB());

要么
aList.forEach(bList::add);

但是我无法将这两者混合以获得所需的输出。

最佳答案

这里有几种方法

aList.stream().map(A::getB).forEach(bList::add);
// or
aList.forEach(a -> bList.add(a.getB()));

或者甚至可以即时创建bList():
List<B> bList = aList.stream().map(A::getB).collect(Collectors.toList());

关于java - Java 8 foreach将子对象添加到新列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39326658/

10-13 08:25