Я бачу, що Котлін має List<out E>
колекцію, і мені було цікаво про різні способи її ініціалізації. На Java я міг написати:
List<String> geeks = Arrays.asList("Fowler", "Beck", "Evans");
Як я можу досягти того ж у Котліні?
Я бачу, що Котлін має List<out E>
колекцію, і мені було цікаво про різні способи її ініціалізації. На Java я міг написати:
List<String> geeks = Arrays.asList("Fowler", "Beck", "Evans");
Як я можу досягти того ж у Котліні?
Відповіді:
listOf
функція вищого рівня на порятунок:
val geeks = listOf("Fowler", "Beck", "Evans")
List<T>
, тому не слід вважати, що його можна змінювати.
Як прихильні відповіді Іллі, так і gmariotti є добрими і правильними. Однак деякі альтернативи поширені в коментарях, а деякі взагалі не згадуються.
Ця відповідь включає короткий виклад вже поданих, поряд із роз’ясненнями та кількома іншими альтернативами.
List
)Незмінні списки або списки лише для читання - це списки, до яких не можна додавати чи видаляти елементи.
listOf()
часто робить те, що ти хочеш. Це створює незмінний список, подібний до Arrays.asList
Java.emptyList()
робить те саме, але, природно, повертає порожній список.listOfNotNull()
повертає незмінний список, виключаючи всі null
елементи.MutableList
)Змінні списки можуть містити додані або видалені елементи.
mutableListOf()
, що, як правило, є тим, що вам потрібно, коли вам потрібно додати або видалити елементи зі списку.arrayListOf()
. Це створює змінний ArrayList
. Якщо ви дійсно хочете ArrayList
реалізації, скористайтеся цим mutableListOf()
.List
реалізацій, які не отримали жодних - або допоміжних функцій, вони можуть бути ініційовані як, наприклад, val list = LinkedList<String>()
. Тобто просто створити об’єкт, викликавши його конструктор. Використовуйте це, лише якщо ви дійсно хочете, наприклад, LinkedList
реалізацію.Дозвольте пояснити деякі випадки використання: давайте створимо незмінний (незмінний) список з ініціалізуючими елементами:
val myList = listOf("one" , "two" , "three")
давайте створимо змінний (мінливий) список із ініціалізуючими полями:
val myList = mutableListOf("one" , "two" , "three")
Давайте оголосимо незмінним (незмінним), а потім створимо його:
lateinit var myList : List<String>
// and then in the code :
myList = listOf("one" , "two" , "three")
І нарешті, додайте додаткові предмети до кожного:
val myList = listOf("one" , "two" , "three")
myList.add() //Unresolved reference : add, no add method here as it is non mutable
val myMutableList = mutableListOf("one" , "two" , "three")
myMutableList.add("four") // it's ok
Таким чином, ви можете ініціалізувати Список у Kotlin
val alphabates : List<String> = listOf("a", "b", "c")
listOf
?