How can I create an array in Kotlin like in Java by just providing a size?
In Kotlin, creating an IntArray of size N is simple. Use IntArray(n)
or the appropriate type, as detailed thoroughly in hotkey's answer.
When utilizing your fixed size array, you can use Kotlin Destructuring
// Create fixed sized array
val point = IntArray(2)
// Access values directly
val (x, y) = point
In this case, x
will be taken from index 0, y
from index 1, etc.
According to the reference, arrays are created in the following way:
For Java's primitive types there are distinct types
IntArray
,DoubleArray
etc. which store unboxed values.They are created with the corresponding constructors and factory functions:
val arrayOfZeros = IntArray(size) //equivalent in Java: new int[size] val numbersFromOne = IntArray(size) { it + 1 } val myInts = intArrayOf(1, 1, 2, 3, 5, 8, 13, 21)
The first one is simillar to that in Java, it just creates a primitive array filled with the default value, e.g. zero for
Int
,false
forBoolean
.Non primitive-arrays are represented by
Array<T>
class, whereT
is the items type.T
can still be one of types primitive in Java (Int
,Boolean
,...), but the values inside will be boxed equivalently to Java'sInteger
,Double
and so on.Also,
T
can be both nullable and non-null likeString
andString?
.These are created in a similar way:
val nulls = arrayOfNulls<String>(size) //equivalent in Java: new String[size] val strings = Array(size) { "n = $it" } val myStrings = arrayOf("foo", "bar", "baz") val boxedInts = arrayOfNulls<Int>(size) //equivalent in Java: new Integer[size] val boxedZeros = Array(size) { 0 }
Here is simple example of init of Array of String
var names = Array<String>(<AnotherArray.size>) { i -> "" }
Kotlin doc