【问题标题】:Filter a list property of a list of objects in scala过滤scala中对象列表的列表属性
【发布时间】:2015-11-28 02:11:48
【问题描述】:

我正在尝试过滤 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 中的所有结果,其中包含每个被过滤结果的名称属性。

【问题讨论】:

  • 你确定你得到一个 List[String] 吗?对于我阅读的内容,您应该得到一个 List[Collection[Person]]。

标签: java list scala filter seq


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2020-07-01
    • 2021-08-10
    • 2017-10-18
    • 1970-01-01
    • 2018-10-12
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    • 2020-12-14
    相关资源
    最近更新 更多