你好我想知道加入两个可变列表的最佳性能是什么
if list1.addall (list2)
with foreach
list1?.let { list1 -> list2?.let(list1::addAll) }
或地图或类似的东西..?
你好我想知道加入两个可变列表的最佳性能是什么
if list1.addall (list2)
with foreach
list1?.let { list1 -> list2?.let(list1::addAll) }
或地图或类似的东西..?
如果第一个列表是可变的并且您想修改它,只需使用+=
运算符:
list1 += list2
它委托给addAll
成员函数,将所有元素附加list2
到list1
如果您不想改变原始列表,请使用+
运算符:
val result = list1 + list2
它将两个列表连接到第三个新列表中。与手动创建一个空的 ArrayList 并调用addAll
它相比,此操作符具有将生成的 ArrayList 预置为估计大小的优点,因此有助于节省 ArrayList 的存储阵列重新分配。
如果list1
是可变的,您可以修改它:
list1.addAll(list1.size, list2)
你list1
会有list1 + list2
如果您无法修改,您可以创建ArrayList
或LinkedList
添加所有
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,因为向其中添加项目总是很便宜,而 ArrayList 有时可能会在到达数组末尾时分配更多空间。
有关主题何时在 Java 中使用 LinkedList 而不是 ArrayList的更多信息,请参阅此内容?
如果list1
还不是 LinkedList,请记住mutableListOf()
返回一个 ArrayList,那么您可以像这样创建第三个列表:
val newList = LinkedList<Int>()
list1.forEach {
newList += it
}
list2.forEach {
newList += it
}