我正在尝试过滤 scala 中对象列表的列表属性。例如:
java中定义的类
public class Result{
private Collection<Person> persons= new ArrayList();
public Collection<Person> getPersons() {return this.persons;}
}
public class Person{
public String name
}
我的过滤函数返回的是字符串列表而不是结果列表
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 中的所有结果,每个结果的名称属性都被过滤。
最佳答案
好吧,您正在将每个结果映射到过滤后的人员集合。如果你想将这些集合包装回结果(可能过滤空结果??),你需要这样的东西:
listOfResutlts.flatMap(res => {
val filtered = res.getPersons.filter(_.name=="xx")
if(filtered.isEmpty) None else Some(new Result(filtered))
}
请注意,您需要能够从一组新的 Person 构造一个新的 Result。
关于java - 过滤scala中对象列表的列表属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32355353/