скопировать одного arraylist другому arraylist в kotlin - PullRequest
0 голосов
/ 06 мая 2018

Я пытаюсь скопировать один ArrayList в другой ArrayList в Kotlin

1-й ArrayList:

private var leadList1: ArrayList<Lead> = ArrayList()

2-й ArrayList:

val leadList2: ArrayList<Lead?>?

Я пытался использовать addAll(). leadList1.addAll(leadList2)

Но это не работает.

Ошибка при отображении:

Required: Collection<Lead>
Found: kotlin.collections.ArrayList<Lead?>?

Ответы [ 2 ]

0 голосов
/ 03 июня 2019

Сделайте это: leadList1.addAll (leadList2.orEmpty (). filterNotNull ())

И для фильтрации по свойству вы можете сделать так:

leadList1.addAll (leadList2.orEmpty (). Filter {item -> item? .Type == YourTypeString})

0 голосов
/ 06 мая 2018

Это небезопасно, потому что ваш первый список может содержать только объекты типа Lead, в то время как ваш второй имеет Lead? в качестве параметра типа, что означает, что он может содержать null значения. Вы не можете добавить их в первый список.

Решение этой проблемы будет зависеть от вашего контекста, но вы также можете разрешить первому списку также содержать элементы, допускающие значения NULL:

private var leadList1: ArrayList<Lead?> = ArrayList()

Или вы можете добавить только ненулевые элементы второго списка в первый:

leadList1.addAll(leadList2.filterNotNull())

И в любом случае вам придется выполнить проверку на ноль leadList2, поскольку весь список помечается как потенциально нулевой, что обозначается последним ? типа ArrayList<Lead?>?.

if (leadList2 != null) {
    leadList1.addAll(leadList2.filterNotNull())
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...