过滤scala中对象列表的列表属性

时间:2015-09-02 14:03:37

标签: java list scala filter seq

我正在尝试过滤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的名称都是正在过滤的。

1 个答案:

答案 0 :(得分:1)

好吧,您将每个结果映射到过滤后的人员集合。如果你想将这些集合包装回结果(可能过滤空结果?),你需要这样的东西:

listOfResutlts.flatMap(res => {
   val filtered = res.getPersons.filter(_.name=="xx")
   if(filtered.isEmpty) None else Some(new Result(filtered))
}

请注意,您需要能够从一组新的Person构造一个新的结果。