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

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

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

или карта или что-то подобное ..?

Ответы [ 3 ]

1 голос
/ 13 марта 2019

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

list1 += list2

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

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

val result = list1 + list2

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

0 голосов
/ 12 марта 2019

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

list1.addAll(list1.size, list2)

и в list1 у вас будет list1 + list2

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

val newList = ArrayList<Int>()

newList.addAll(list1)
newList.addAll(list2)
0 голосов
/ 12 марта 2019

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

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

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

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

    list2.forEach {
        newList += it
    }
...