数组列表的实现

时间:2018-12-30 07:10:15

标签: arraylist kotlin

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进行迭代? 不是和我一起点击。

3 个答案:

答案 0 :(得分:1)

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

显然索引5在这里不是有效的索引,因此我们需要确保不要迭代太多。

答案 1 :(得分:1)

强文本在Kotlin中的数组具有从零开始的索引。要遍历整个数组,我们需要使用从 0 array.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) {
   // ...
}

答案 2 :(得分:0)

数组的索引从零开始。这意味着在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)
}