I see that Kotlin has ByteArray, ShortArray, IntArray, CharArray, DoubleArray, FloatArray
, which are equivalent to byte[], short[], int[],char[], double[]
To create an empty Array of Strings in Kotlin you should use one of the following six approaches:
First approach:
val empty = arrayOf<String>()
Second approach:
val empty = arrayOf("","","")
Third approach:
val empty = Array<String?>(3) { null }
Fourth approach:
val empty = arrayOfNulls<String>(3)
Fifth approach:
val empty = Array<String>(3) { "it = $it" }
Sixth approach:
val empty = Array<String>(0, { _ -> "" })
For Strings
and other types, you just use Array<*>
.
The reason IntArray
and others exist is to prevent autoboxing.
So int[]
relates to IntArray
where Integer[]
relates to Array<Int>
.
Some of the common ways to create a String array are
This will create an array of 5 strings with initial values to be empty string.
<String?>
(5)This will create an array of size 5 with initial values to be null. You can use String data to modify the array.
When you know the contents of array already then you can initialise the array directly.
There is an easy way for creating an multi dimensional array of strings as well.
var matrix = Array(5){Array(6) {""}}
This is how you can create a matrix with 5 rows and 6 columns with initial values of empty string.
This example works perfectly in Android
In kotlin you can use a lambda expression for this. The Kotlin Array Constructor definition is:
Array(size: Int, init: (Int) -> T)
Which evaluates to:
skillsSummaryDetailLinesArray = Array(linesLen) {
i: Int -> skillsSummaryDetailLines!!.getString(i)
}
Or:
skillsSummaryDetailLinesArray = Array<String>(linesLen) {
i: Int -> skillsSummaryDetailLines!!.getString(i)
}
In this example the field definition was:
private var skillsSummaryDetailLinesArray: Array<String>? = null
Hope this helps
There's no special case for String
, because String
is an ordinary referential type on JVM, in contrast with Java primitives (int, double, ...) -- storing them in a reference Array<T> requires boxing them into objects like Integer and Double. The purpose of specialized arrays like IntArray in Kotlin is to store non-boxed primitives, getting rid of boxing and unboxing overhead (the same as Java int[]
instead of Integer[]
).
You can use Array<String>
(and Array<String?>
for nullables), which is equivalent to String[]
in Java:
val stringsOrNulls = arrayOfNulls<String>(10) // returns Array<String?>
val someStrings = Array<String>(5) { "it = $it" }
val otherStrings = arrayOf("a", "b", "c")
See also: Arrays in the language reference
you can use too:
val frases = arrayOf("texto01","texto02 ","anotherText","and ")
for example.