Каков наилучший способ или лучшая производительность для объединения двух таблиц изменяемых в kotlin?

Привет , я хотел бы знать, какая производительность лучше всего подходит для объединения двух таблиц изменчивости

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

или карта или что-то в этом роде..?

4 ответа

Если первый список изменчив и вы хотите изменить его, просто используйте += оператор:

list1 += list2

Делегирует addAll функция-член, добавляющая все элементы list2 в list1

Если вы не хотите изменять исходный список, используйте + оператор:

val result = list1 + list2

Он объединяет два списка в третий новый список. По сравнению с созданием пустого ArrayList вручную и вызовом addAll в этом случае этот оператор имеет преимущество, заключающееся в том, что получающийся ArrayList имеет прижим к предполагаемому размеру, поэтому он помогает сэкономить перераспределения массива хранения ArrayList.

Если оба они одного типа, то вы можете использовать плоскую карту в Котлине. Например,

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

Затем вы можете объединить их оба, как показано ниже

      val mergedList = listOf(listA, listB).flatten()

или же

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

Таким образом, он эффективнее, удобнее для чтения и меньше кода !! Удачного кодирования с котлином!

Если list1 является изменчивым, и вы можете изменить его:

list1.addAll(list1.size, list2)

И в list1 у тебя будет list1 + list2

Если вы не можете изменить, вы можете создать ArrayList или же LinkedList и добавить все

val newList = ArrayList<Int>()

newList.addAll(list1)
newList.addAll(list2)

Лучшим вариантом является создание LinkedList, потому что в него всегда дешево добавлять элементы, тогда как ArrayList может иногда выделять больше места, если вы достигнете конца массива.

См. Это для получения дополнительной информации по теме Когда использовать LinkedList поверх ArrayList в Java?

Если list1 уже не LinkedList, имея в виду mutableListOf() возвращает ArrayList, затем вы можете создать третий список следующим образом:

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

    list2.forEach {
        newList += it
    }
Другие вопросы по тегам