Як створити порожній масив у kotlin?


93

Я використовую в Array(0, {i -> ""})даний час, і я хотів би знати, чи є краща реалізація, така якArray()

плюс, якщо я використовую arrayOfNulls<String>(0) as Array<String>, компілятор попередить мене, що цей склад ніколи не може бути успішним. Але це реалізація за замовчуванням всередині Array(0, {i -> ""}). Мені щось не вистачає?


stackoverflow.com/questions/33583235/… - один із коментарів свідчить про те, що попередження є помилкою
Duncan McGregor

Відповіді:


128

На кінець (червень 2015 р.) Функціонує стандартна бібліотека Котліна

public fun <T> arrayOf(vararg t: T): Array<T>

Отже, для створення порожнього масиву рядків ви можете писати

val emptyStringArray = arrayOf<String>()

2
А як щодо набраних масивів IntArray? Зараз я використовую arrayOf<Int>().toIntArray(), чи є кращий спосіб?
csharpfolk

5
яка мета цих методів? тому що ми не можемо призначити розмір, тому ми не можемо призначити значення або отримати. масив [0] кинути java.lang.ArrayIndexOutOfBoundsException:виняток.
Асіф Муштак

що якщо тип Tзамість String?
Арі

1
@csharpfolk, ти можеш використовувати intArrayOf () для ініціалізації порожнього IntArray
Cremons

Як додати елемент у масив рядків у kotlin?
Сайед Хамза Хасан,

42

Тільки для довідки, є також emptyArray. Наприклад,

var arr = emptyArray<String>()

Подивитися


1
arr [0] throw, java.lang.ArrayIndexOutOfBoundsException:як ми можемо ним користуватися?
Асіф Муштак

8
Це порожній масив, ви не можете додати / прочитати що-небудь у / з нього. Це може здатися марним, але іноді доводиться кудись передавати масив, і це дозволяє легко побудувати порожній масив.
Kuba Beránek

1
це краще, ніж відповідь Марсіанської Одіссеї, оскільки при використанні в класі даних для ініціалізації масиву arrayOf викликає java.util.concurrent.ExecutionException, а emptyArray () - ні.
iSWORD

1
Це незмінна довжина 0! Тож це корисно лише для дуже спеціальних цілей, коли ви не хочете зберігати будь-які дані (потрібно лише ввести тип ). Використовуйте Array(length){""}для включення бажаного length. Дивіться мою відповідь нижче для деталей.
Мір-Ісмаїлі

14

Порожній чи null? Це питання!

Щоб створити масив nulls, просто використовуйте arrayOfNulls<Type>(length).


Але щоб створити порожній масив розміру length, використовуйте:

val arr = Array(length) { emptyObject }

Примітка полягає в тому, що ви повинніemptyObject правильно визначити для кожного типу даних (оскільки ви не хочете nulls). E. g. для Strings, emptyObjectможе бути "". Тому:

val arr = Array(3) { "" }  // is equivalent for: arrayOf("","","")

Ось це живий приклад . Зауважте, що програма за замовчуванням працює з двома зразками аргументів.


9

нульовий масив

var arrayString=Array<String?>(5){null}
var nullArray= arrayOfNulls<String>(5)

1
Це масив нулів, а не порожні рядки, як йдеться.
polkovnikov.ph

2

Використання:

@JvmField val EMPTY_STRING_ARRAY = arrayOfNulls<String>(0)

Він повертає масив рядків 0 із рядками, ініціалізований нульовими значеннями.

1. Неправильно:

@JvmField val EMPTY_STRING_ARRAY = emptyArray<String>()

Воно повертається arrayOfNulls<String>(0)

2. Неправильно:

 @JvmField val EMPTY_STRING_ARRAY = arrayOf<String>()

Він повертає масив, що містить рядки.


2

Як зазначалося вище, ви можете використовувати IntArray(size)або FloatArray(size).


1

Я знайшов два способи створити порожній масив, другий спосіб без лямбда:

var arr = Array (0, { i -> "" })
var arr2 = array<String>()

Щодо нульових рядків Котліна, це заборонено. Вам потрібно використовувати String? типу, щоб дозволити рядкам нуль.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.