【问题标题】:Kotlin - Sort maps collectionKotlin - 排序地图集合
【发布时间】:2017-11-14 14:37:24
【问题描述】:

我有一个功能

fun init(properties: Collection<Map<Any, Any>>?) {
    properties?.filter { it.isNotEmpty() }
}
  1. 我需要过滤掉空地图。
  2. 我只需要具有String 类型的键和值的映射。
  3. 对于剩余的地图,我想迭代键来获取值。

【问题讨论】:

    标签: android sorting kotlin


    【解决方案1】:

    您可以使用.all { ... } 来检查所有.keys.values 是否都是字符串:

    properties
        ?.filter { 
            it.isNotEmpty() && 
            it.keys.all { key -> key is String } && 
            it.values.all { value -> value is String }
        }
        ?.forEach { /* do some stuff with it */ }
    

    请注意,您仍然需要未经检查的强制转换才能以 Map&lt;String, String&gt; 对过滤后的映射进行操作,因为编译器无法通过键和值检查推断类型。

    【讨论】:

    • 谢谢哥们。这段代码给了我过滤的地图集合。但是我如何将 forEach 用于所有地图。我的意思是每个地图中的 forEach 键获取值?
    • 您需要flatMap属性。因此,基于热键的答案,它看起来像这样:properties ?.filter { it.isNotEmpty() &amp;&amp; it.keys.all { key -&gt; key is String } &amp;&amp; it.values.all { value -&gt; value is String } } ?.flatMap { it.entries } ?.forEach { /* do something */ }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-29
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 2016-08-24
    • 1970-01-01
    相关资源
    最近更新 更多