我正在尝试过滤scala中对象列表的列表属性。例如:
java中定义的类
public class Result{
private Collection<Person> persons= new ArrayList();
public Collection<Person> getPersons() {return this.persons;}
}
public class Person{
public String name
}
我的过滤器函数返回一个String列表而不是Result
列表val listOfResutlts = Seq.empty[Result] // imagine this was filled with a bunch of Result objects
listOfResutlts.map(
result => result.getPersons.filter(person => person.name=="xx")
)
更新 我想在listOfResults中找回所有结果,并且每个Result的名称都是正在过滤的。
答案 0 :(得分:1)
好吧,您将每个结果映射到过滤后的人员集合。如果你想将这些集合包装回结果(可能过滤空结果?),你需要这样的东西:
listOfResutlts.flatMap(res => {
val filtered = res.getPersons.filter(_.name=="xx")
if(filtered.isEmpty) None else Some(new Result(filtered))
}
请注意,您需要能够从一组新的Person构造一个新的结果。