在 Kotlin 中用一行(自定义)项目初始化新的数组列表

问题描述 投票:0回答:3

在 Kotlin 中,我创建了一个扩展函数来使用自定义项初始化新的 ArrayList,如下所示:

fun <T> arrayListFrom(vararg item: T): ArrayList<T> {
    return item.toMutableList() as ArrayList<T>
}

这样我就可以轻松创建这样的数组列表

arrayListFrom(MyCustomItem(1), MyCustomItem(2))

...无需创建一个新的空元素,并将所有元素一一添加到其中

Kotlin 有很多有用的集合函数,我无法想象我需要这个扩展来轻松初始化 arrayList,但找不到其他简单的方法。我在这里错过了一些有用的 Kotlin 函数吗?

kotlin arraylist
3个回答
5
投票

arrayListOf(items)

所以你可以这样做

arrayListOf(MyCustomItem(1), MyCustomItem(2))


0
投票

还有一种更简单的方法来初始化 ArrayList,而不是一行。

object: ArrayList<instanceType>() {
        init{
            add(instance1)
            add(instance2)
        }
 }

0
投票

另一个巧妙的技巧是利用 Kotlin 的基本数组类型。它的构造函数有一个可选的 init 函数,它允许像这样的酷而简单的初始化

val newArray = Array(2) { MyCustomItem(i+1) }
这将使
[ MyCustomItem(1), MyCustomItem(2) ]

要从中获取 arrayList,只需将

toCollection(ArrayList())
添加到末尾即可,如下所示

val newArrayList = Array(2) { MyCustomItem(i+1) }.toCollection(ArrayList())

然后很快!创建数组,并将项目发送到目标 arrayList。你可以根据需要使用arrayList,而且只用一行就完成了!

免责声明:考虑到幕后涉及的传输,它可能会更慢,所以当然要小心使用!

© www.soinside.com 2019 - 2024. All rights reserved.