首页 > 解决方案 > 嵌套列表kotlin中的谓词

问题描述

我有一个 JSON 列表,我需要在其中根据一些过滤器过滤数据。我正在使用谓词进行过滤,但根据我的需要,我需要过滤嵌套列表,如果在这里我使用谓词,我会留下 3 个测试谓词,Any, None, and All但因为我只想要匹配的数据并且我没有使用任何这些谓词。

AsAny如果至少有一个匹配元素,All则返回 true,如果存在所有匹配元素,则返回 true,但是如何才能从嵌套列表中仅获取匹配的元素,而与任何不匹配的元素无关。

我可以使用循环列表的传统方法,但我想知道是否可以使用谓词。

这是我试图获取其会话元素包含的中心的示例 JSONmin_age_limit is > 18available_dose_1 > 0.

{
"centers": [
    {
        ....
        "sessions": [
            {
                "session_id":"adad",
                ...
                "min_age_limit":45,
                "available_capacity_dose1": 5,
                "available_capacity_dose2": 5
                ...
            },
            {
                "session_id":"adad1",
                ...
                "min_age_limit":18,
                "available_capacity_dose1": 0,
                "available_capacity_dose2": 5
                ...
            },
            {
                "session_id":"adad2",
                ...
                "min_age_limit":18,
                "available_capacity_dose1": 5,
                "available_capacity_dose2": 0
                ...
            }
        ]
    }
    ....
    ]
}

标签: androidkotlinpredicate

解决方案


您应该像下面这样使用过滤器

filteredList = sessions.filter{ it.min_age_limit > 18 && it.available_dose_1 > 0 } 

澄清一下,Kotlin 支持 any、none 和 all 作为奖励谓词。但过滤器也在那里。我想这就是你要找的。


推荐阅读