当前位置: 首页 > 知识库问答 >
问题:

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

谢涵亮
2023-03-14

我正在尝试过滤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")
)

UPDATE我想取回listOf中的所有结果,其中每个结果的名称属性被过滤。

共有1个答案

谭志用
2023-03-14

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

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

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

 类似资料:
  • 问题内容: 当存在时,是否有可能获得全部列表?是否为此准备了电话,还是我必须编写一个foreach循环,如: 问题答案: Java 8及更高版本: 如果需要确保得到结果,则必须将最后一行更改为: Java 7及以下版本: Java 8之前的标准集合API不支持这种转换。您必须编写一个循环(或将其包装在您自己的“地图”函数中),除非您使用一些更高级的集合API /扩展。 (您的Java代码段中的行正

  • 问题内容: jsfiddle http://jsfiddle.net/KfSBq/ 所谓子对象,是指我用ng-repeat显示的所有对象在其内部都包含一个对象列表,并且我希望根据这些子对象之一的属性进行过滤。 仅此一项就非常简单。我有个对象,每个对象都包含和对象列表: 我按类别显示它们: 我的问题是现在仍然显示不包含任何条目的日常对象。如何实现一种情况,如果过滤使列表为空,则该列表也不显示? 问题

  • 问题内容: 我在python中有一个 统一 的对象列表: 现在,我想提取一个具有该类某些属性的列表(比如attr),以便将其传递给某个函数(例如用于绘制该数据) pythonic的做法是什么, ? 也许派生列表并添加一个方法,所以我可以使用一些习惯用法,例如 ? 问题答案: 您还可以编写: 这样,您将获得一个节省内存的生成器。有关更多好处,请参见Generator Expressions 。

  • 基于 那个东西的 以下是我目前所尝试的: 我想使用一个Java8流和两个getter的lambdas来完成这一操作,这两个getter最终检索用于确定唯一性的属性,但不确定如何实现。当用于比较的属性位于pojo的顶层时,我知道如何做,但当属性嵌套在另一个对象中时,我不知道如何做。

  • 问题内容: 我希望有一个人可以帮助我。对于我当前在angular 1.3中的项目,我使用以下列表: 我想获取内容数组中具有ID X的对象。 我使用了此ng-repeat: 当我使用id:1,id:4或id:7时,它可以工作,但不适用于其他id … 有任何想法吗? 编辑 我终于找到了引起问题的原因,我使用的是angular 1.3.0。升级到1.3.11后,它可以正常工作!! 问题答案: 您可以根据

  • 我有一个物体,如下所示 给定MyObject的列表,是否可以使用Java8个流来过滤类型和子类型? 目前为止我有 但在这一部分中,我还希望在每个子类型上使用另一个过滤器来过滤特定子类型上的过滤器。我想不出怎么做。 例如 我会传入匹配类型B和子类型Z,所以我希望得到一个结果- 以下当前返回列表中的2个项目。 但是我想在每个子类型上添加一个额外的过滤器,并且只匹配“Z”存在的地方。