Який еквівалент Котліна в рядку Java []?


164

Я бачу, що у Котліна ByteArray, ShortArray, IntArray, CharArray, DoubleArray, FloatArrayє рівнозначні на byte[], short[], int[],char[], double[], float[]Java.

Тепер мені цікаво, чи є StringArrayеквівалент Java String[]?


7
typealias StringArray = Array<String>;)
marstran

Відповіді:


225

Там немає особливого випадку String, тому що Stringце звичайний посилальної типу на JVM, на відміну від Java примітивів ( int, double, ...) - зберігати їх на засланні Array<T>вимагає боксу в об'єкти , як IntegerіDouble . Призначення спеціалізованих масивів, як IntArrayу Котліні, - зберігати примітки, які не містять ящиків, позбавляючись від боксу та розпакування (на зразок Java int[]замість Java Integer[]).

Ви можете використовувати Array<String>Array<String?>для нульових значень), що еквівалентно String[]Java:

val stringsOrNulls = arrayOfNulls<String>(10) // returns Array<String?>
val someStrings = Array<String>(5) { "it = $it" }
val otherStrings = arrayOf("a", "b", "c")

Дивіться також: Масиви у мовній довідці


18

використовувати arrayOf , arrayOfNulls , emptyArray

var colors_1: Array<String> = arrayOf("green", "red", "blue")
var colors_2: Array<String?> = arrayOfNulls(3)
var colors_3: Array<String> = emptyArray()

16

Щоб створити порожнє Array of Stringsв Котліні, слід скористатися одним із наступних шести підходів:

Перший підхід:

val empty = arrayOf<String>()

Другий підхід:

val empty = arrayOf("","","")

Третій підхід:

val empty = Array<String?>(3) { null }

Четвертий підхід:

val empty = arrayOfNulls<String>(3)

П'ятий підхід:

val empty = Array<String>(3) { "it = $it" }

Шостий підхід:

val empty = Array<String>(0, { _ -> "" })

9

Ці типи існують, щоб ви могли створювати масиви примітивів, а не типів, розміщених у коробці. Оскільки String не є примітивом на Java, ви можете просто використовувати Array<String>в Kotlin як еквівалент Java String[].


5

Для Stringsта інших типів ви просто використовуєте Array<*>. Причина IntArrayта інші існують у тому, щоб запобігти автобоксингу.

Так int[]стосується, IntArrayде Integer[]стосується Array<Int>.


1

Деякі з поширених способів створення масиву String є

  1. var arr = масив (5) {""}

Це створить масив з 5 рядків з початковими значеннями, які будуть порожнім рядком.

  1. var arr = arrayOfNulls <String?>(5)

Це створить масив розміром 5 з початковими значеннями, які будуть нульовими. Ви можете використовувати дані String для зміни масиву.

  1. var arr = arrayOf ("нуль", "один", "два", "три")

Коли ви вже знаєте вміст масиву, ви можете ініціалізувати масив безпосередньо.

  1. Існує простий спосіб для створення багатовимірного масиву рядків.

    var matrix = масив (5) {масив (6) {""}}

    Ось так можна створити матрицю з 5 рядків та 6 стовпців із початковими значеннями порожнього рядка.


0

Цей приклад відмінно працює в Android

У kotlin ви можете використовувати лямбда-вираз для цього. Визначення конструктора масиву Kotlin:

Array(size: Int, init: (Int) -> T)

Який оцінює:

skillsSummaryDetailLinesArray = Array(linesLen) {
        i: Int -> skillsSummaryDetailLines!!.getString(i)
}

Або:

skillsSummaryDetailLinesArray = Array<String>(linesLen) {
        i: Int -> skillsSummaryDetailLines!!.getString(i)
}

У цьому прикладі визначення поля було:

private var skillsSummaryDetailLinesArray: Array<String>? = null

Сподіваюся, це допомагає


0

Ви також можете використовувати:

val frases = arrayOf("texto01","texto02 ","anotherText","and ")

наприклад.

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