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来迭代?这不是在和我说话。
发布于 2018-12-30 03:50:14
数组的索引是基于零的。这意味着在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)
}
发布于 2018-12-29 23:29:51
因为如果不添加-1,它将遍历0到列表的大小。这意味着,如果我们有一个大小为5的列表,它将迭代:0, 1, 2, 3, 4, 5
很明显,索引5在这里不是一个有效的索引,所以我们需要确保我们不会迭代太远。
发布于 2018-12-29 23:36:19
Kotlin中的强文本数组具有基于零的索引.要迭代整个数组,我们需要使用从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) {
// ...
}
https://stackoverflow.com/questions/53975858
复制