我有这段代码
Set<Long> families = humans
.stream()
.flatMap(x -> x.data.stream().map(l -> l.person.id))
.collect(Collectors.toSet());
humans = List<Human>
:
public static class Human
{
public List<Data> data = Lists.newArrayList();
}
public static class Data
{
public Person person;
}
public class Person
{
public long id;
public String name;
}
由于此错误,此代码无效:
类型不匹配:无法从Set转换为Set 为什么我有这个错误?我做错了吗?
答案 0 :(得分:1)
我不知道为什么会收到错误,但作为解决方法:
Set<Long> families = humans
.stream()
.flatMap(x -> x.data.stream().map(l -> l.person.id)).map(f->(Long) f)
.collect(Collectors.toSet());
或者(感谢@Tunaki):
Set<Long> families = humans
.stream()
.<Long>flatMap(x -> x.data.stream().map(l -> l.person.id))
.collect(Collectors.toSet());
或者我可以使用循环,比在这种情况下使用流更快。