【问题标题】:the implementation of the arraylists数组列表的实现
【发布时间】:2019-05-27 07:14:44
【问题描述】:
fun main(args:Array<String>){

    var arraylist= ArrayList<String>()
    arraylist.add("jena")
    arraylist.add("Laya")
    arraylist.add("Hussein")
    arraylist.add("Ahmed")

    println("First name:"+ arraylist.get(0))
    arraylist.set(0," Laya Hussein")

    println(" all element by object")
    for ( item in arraylist){
        println(item)
    }

    println(" all element by index")
    for( index in 0..arraylist.size-1){
       println(arraylist.get(index))
    }
}

我的问题为什么我们添加 -1 进行迭代? 它没有点击我。

【问题讨论】:

    标签: arrays loops kotlin arraylist


    【解决方案1】:

    数组的索引从零开始。这意味着在arrayOf("A", "B", "C")

    A 的索引为 0,B 的索引为 1,C 的索引为 2。所以最后一个有效索引是数组的大小 - 1这是3 - 1 = 2

    如果您不想担心,可以使用 indices 扩展属性,它是所有有效索引中的 IntRange

    for(index in arraylist.indices) {
       println(arraylist[index])
    }
    

    注意get 被替换为操作符[],这使得代码更加简洁。

    如果您不关心索引,请完全避免头痛并使用 forEach

    arraylist.forEach {
       println(it)
    }
    

    【讨论】:

    • 感谢您的解释。
    【解决方案2】:

    强文本Kotlin 中的数组具有从零开始 索引。要遍历整个数组,我们需要使用从 0array.size()-1 的索引。运算符.. 表示包含两个范围,因此要遍历整个数组:

    for (index in 0..arraylist.size - 1) {
       // ...
    }
    

    我们可以使用函数until来避免使用arraylist.size-1,它包括左范围但不包括右范围:

    for (index in 0 until arraylist.size) {
       // ...
    }
    

    我们也可以使用较短版本的 for 循环来遍历数组的所有元素:

    for (item in arraylist) {
       // ...
    }
    

    【讨论】:

    • 这是更惯用的解决方案。
    • 另外还有for(index in array.indices)array.forEacharray.forEachIndexed
    【解决方案3】:

    因为如果不加 -1,它会遍历 0 到列表的大小。这意味着,如果我们有一个大小为 5 的列表,它将迭代: 0, 1, 2, 3, 4, 5

    显然索引 5 在这里不是一个有效的索引,所以我们需要确保我们不会迭代太远。

    【讨论】:

      猜你喜欢
      • 2019-05-13
      • 1970-01-01
      • 1970-01-01
      • 2017-07-13
      • 2014-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-07
      相关资源
      最近更新 更多