如果我有2个收藏品,
List<String> domainArr;
List<Person> personArr;
我想对String中的每个元素进行一次小的转换,然后迭代personArr到
List<String> urlArr = strArr.stream()
.map(str -> "https://" + strArr)
.collect(Collectors.toList());
我有像
这样的方法List<Person> getPersons(String url){
/*makes a restful call to the url and gets a List of objects for each URL.*/
}
我想遍历来自urlArr的每个url并将其传递给getPersons(url)方法,并且对于每个获得的结果(List),我想迭代该人并执行更多操作
之类的人persons.stream()
.filter(Objects::nonNull)
.map(Person::getName)
.filter(Objects::nonNull)
.collect(Collectors.toList());
我希望从所有结果中获得所有人名。
我想知道如何在Java 8中实现这一功能。任何指针?
答案 0 :(得分:3)
您可以使用flatMap
将您的List<T>
信息流转换为T
strArr.stream()
.map(str -> "https://" + strArr)
.map(url -> getPersons(url))
.flatMap(persons -> persons.stream())
.filter(Objects::nonNull)
.map(Person::getName)
.filter(Objects::nonNull)
.collect(Collectors.toList());