kotlin - 如何以清晰的方式将 kotlin Map<String, String?> 转换为 Map<String, String>?

标签 kotlin

我想找到最清晰、最优雅的方式来转换 Map<String, String?>Map<String, String> ,过滤掉 null 的对值。

我在下面有一个人为的解决方案,但我不喜欢我必须做一个不安全的 !! 。有更好的方法吗?

fun Map<String, String?>.filterNonNull() = this
            .filter { it.value != null }
            .map { it.key to it.value!! }
            .toMap()

最佳答案

mapNotNull 充当 mapfilter 的组合,但返回一个 List 而不是 > map 你想要这样

fun <K, V> Map<K, V?>.filterNonNull(): Map<K, V> = 
    this.mapNotNull { 
        (key, value) -> if (value == null) null else Pair(key, value) 
    }.toMap()

关于kotlin - 如何以清晰的方式将 kotlin Map<String, String?> 转换为 Map<String, String>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57170820/

相关文章:

java - Android Architecture Blueprints "todo‑mvp‑dagger",@Provides for TasksRepository 在哪里?

android - Kotlin:如何绕过 CancellationException

types - 如何在 Kotlin 中声明具有两种类型的变量,如 val x : Int or String

object - Kotlin .add覆盖MutableList中的所有列表项

android - 如何在 WorkManager for Android 中创建一个带有参数的 Worker?

android - OkHttp 4.0.0 是否需要 JVM 目标 1.8?

list - 如何从 var 列表或可变列表获取列表流

android - 如何在 viewpager 中使用 webview 的水平滚动?

android - android中的背景阴影

kotlin - 在 indexOf(...) 中返回 -1 而不是 null 有什么好处?