【问题标题】:kotlin1.3 multiplatform - Convert arraylist to an immutable lsitkotlin 1.3 multiplatform - 将 arraylist 转换为不可变列表
【发布时间】:2020-01-07 11:03:24
【问题描述】:

我正在尝试创建一个 kotlin 多平台库,以后可以使用 IDEA 2019.3、kotlin 1.3 将其转换为 java 和 javascript

我有一个数组列表,我想将其转换为不可变列表

val clean:List<String> = ArrayList<String>()

我看不到将 clean 转换为不可变列表的选项。 从here,我可以看到 kotlin 具有不可变列表实现,但我在 kotlin 1.3 多平台项目中看不到这一点。

我是否遗漏了一些明显的东西?我可以看到类似的[old question][2],但根据this,它似乎应该可用。请帮忙

【问题讨论】:

    标签: kotlin intellij-idea


    【解决方案1】:

    使用 Collections 将数组列表转换为不可变列表,示例:

    可变数组列表:

    val clean:List<String> = ArrayList<String>()
    

    转换为不可变列表:

    val immutableList = Collections.unmodifiableList(clean)
    

    【讨论】:

    【解决方案2】:

    在 Kotlin 中,listOf(...) 创建一个不可变列表,如 documentation of the latest API 中所述。

    这就是为什么你可以写

    val clean:List<String> = ArrayList<String>()
    val immutableClean = listOf(clean.toImmutableList())
    

    其中immutableClean 是一个只读列表。

    【讨论】:

    • 不会 listOf(clean) 产生一个 List>?最后我尝试了类似 listOf( *clean.toTypedArray());
    • @nantitv 是的,这是可能的......我只是注意返回类型是否可变;-)
    猜你喜欢
    • 1970-01-01
    • 2013-05-14
    • 2018-12-30
    • 1970-01-01
    • 2020-01-16
    • 2022-01-02
    • 2013-05-07
    • 1970-01-01
    • 2021-12-22
    相关资源
    最近更新 更多