Kotlin 基于指定列表过滤嵌套列表集合的实现方法
Kotlin 航段经停数过滤实现
相关数据类定义
航段查询类
data class FlightRecommendationQuery( val segments: List<Segment> ) data class Segment( val stops: Int? )
过滤条件类
data class Filter( val stops: Int? )
过滤规则
- 过滤条件列表
filter的长度,与每个FlightRecommendationQuery实例的segments字段长度完全一致 - 仅保留符合以下要求的原列表项:过滤列表每个位置的
stops值与对应位置segments的stops值相等,若过滤条件对应位置stops为null则自动满足该位置的校验
实现代码
你原本的实现逻辑完全正确:
list.filter { query -> filter.indices.all { if (filter[it].stops == null) true else filter[it].stops == query.segments[it].stops } }
也可以简化为更简洁的逻辑或写法,执行逻辑完全等价:
list.filter { query -> filter.indices.all { filter[it].stops == null || filter[it].stops == query.segments[it].stops } }
内容的提问来源于stack exchange,提问作者imn
相关产品推荐
相关产品推荐

