如何在列表中过滤列表然后返回它?

时间:2019-08-26 11:25:16

标签: kotlin

有没有一种解决方案,可以过滤列表中的列表,然后返回列表?

例如:

[group : {name:"group1", 
  student :[student1:{age:10},student2:{age:11},student3:{age:12}]},
group : {name:"group2", 
  student :[student1:{age:11},student2:{age:12},student3:{age:14}]},
]

我想过滤学生的年龄大于10岁且小于13岁。

结果应该是这样的:

[group : {name:"group1", 
  student :[student2:{age:11},student3:{age:12}]},
group : {name:"group2", 
  student :[student1:{age:11},student2:{age:12}]}
]

1 个答案:

答案 0 :(得分:1)

您可以在过滤学生时将组列表映射到自身。如果您的组是数据类,则可以执行以下操作:

val filtered = original.map { group ->
    val students = group.student.filter { it.age in 11..12 }
    group.copy(student = students)
}

内部过滤器将删除不需要的学生,副本将复制您的原始组,但将学生列表更改为已过滤的学生列表。