What's the Kotlin equivalent of Java's String[]?

后端 未结 8 1195
感情败类
感情败类 2020-12-23 08:26

I see that Kotlin has ByteArray, ShortArray, IntArray, CharArray, DoubleArray, FloatArray, which are equivalent to byte[], short[], int[],char[], double[]

相关标签:
8条回答
  • 2020-12-23 09:06

    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, { _ -> "" })
    
    0 讨论(0)
  • 2020-12-23 09:07

    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>.

    0 讨论(0)
  • 2020-12-23 09:10

    Some of the common ways to create a String array are

    1. var arr = Array(5){""}

    This will create an array of 5 strings with initial values to be empty string.

    1. var arr = arrayOfNulls<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.

    1. var arr = arrayOf("zero", "one", "two", "three")

    When you know the contents of array already then you can initialise the array directly.

    1. 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.

    0 讨论(0)
  • 2020-12-23 09:11

    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

    0 讨论(0)
  • 2020-12-23 09:16

    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

    0 讨论(0)
  • 2020-12-23 09:16

    you can use too:

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

    for example.

    0 讨论(0)
提交回复
热议问题