给定人员列表的列表,如何在一行代码中迭代所有名称而不使用java8中的forEach? 请参阅下面代码中评论中的问题。
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<ArrayList<Person>> llist = new ArrayList<ArrayList<Person>>();
ArrayList<Person> list1 = new ArrayList<>();
list1.add(new Person("aaa"));
list1.add(new Person("bbb"));
ArrayList<Person> list2 = new ArrayList<>();
list2.add(new Person("ccc"));
list2.add(new Person("ddd"));
llist.add(list1);
llist.add(list2);
// how to change this part into one line in java 8?
llist.forEach(l -> {
l.forEach(p -> {
System.out.println(p.getName());
});
});
}
static class Person {
String name;
Person(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public String toString() {
return "" + this.name;
}
}
}
最佳答案
不使用 forEach 的“一行”代码:
llist.stream().flatMap(Collection::stream).peek(System.out::println).collect(Collectors.toList());
关于java - 在 Java 8 中一行访问 List<List<Person>> 中的 Person 对象的每个名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45703880/