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

标签 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
}

我的过滤函数返回的是字符串列表而不是结果列表

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/

相关文章:

java - Java Web 应用程序中静态资源的过期 header

jquery - 如何列出列表元素但隐藏段落并仅在单击列表元素时显示?

Python 列表语法帮助

scala - 如何在scala的 ""中输出 "here docs""?

scala - 区分 Scala-3 枚举和密封特征

java - 如何解决 ViewPager 问题?

java - HTTP 状态 404 – 在 rest api 响应中未找到错误

java - 如何解决java.util.NoSuchElementException : for HashMaps and ArrayLists?

java - 删除awt java列表中的字符串

scala - 如何覆盖 sbt 中对特定任务的依赖