这是加入Kotlin的两个突变列表的最佳方法或最佳性能



你好,我想知道哪个是加入两个mutables列表

的最佳性能

if list1.addall (list2) with foreach list1?.let { list1 -> list2?.let(list1::addAll) }

或地图或类似的东西..?

如果第一个列表是可变的,并且要修改它,则只需使用+=操作员:

list1 += list2

它委派给addAll成员函数,将list2的所有元素附加到list1

如果您不想突变原始列表,请使用+操作员:

val result = list1 + list2

它将两个列表连接到第三个新列表中。与用手创建空阵列列表并在其上调用addAll相比,该操作员的优势是将所得的ArrayList授予估计的尺寸,因此它有助于备用ArrayList的存储阵列重新位置。

如果list1是可变的,您可以修改它:

list1.addAll(list1.size, list2)

,在list1中,您将拥有list1 + list2

如果您无法修改,则可以创建ArrayListLinkedList并添加所有

val newList = ArrayList<Int>()
newList.addAll(list1)
newList.addAll(list2)

如果两个类型都相同,则可以在Kotlin中使用平面地图。例如,

val listA = mutableList<String>()
val listB = mutableList<String>()

然后您可以像以下

一样合并它们
val mergedList = listOf(listA, listB).flatten()

val mergedList = listOf(listA, listB).flatMap { it }

这样,它是有效的,更可读和更少的代码!与Kotlin!

进行愉快的编码

最好的选择是创建一个linkedlist,因为将项目添加到其中总是便宜的,而如果您到达数组的末尾,则阵列列表有时可能会分配更多空间。

有关该主题何时使用linkedlist而不是Java中的ArrayList,请参阅此信息?

如果list1还不是LinkedList,请记住mutableListOf()返回ArrayList,则可以创建第三个列表,因此:

 val newList = LinkedList<Int>()
    list1.forEach {
        newList += it
    }
    list2.forEach {
        newList += it
    }

相关内容

  • 没有找到相关文章

最新更新