Kotlin基础七之迭代
Kotlin基础七之迭代
在kotlin中,也有for(...)
、while (...)
、do {...} whlie(...)
循环。只不过与其他的类C语言比较起来,又有些许不同:
fun main(args: Array<String>) {
val languages = arrayListOf("c++",
"Java", "Kotlin", "C", "Python")
println("for loop: ")
for (i in 0..(languages.size - 1)) {
println(languages[i])
}
println("==========\ndo...while loop: ")
var i = 0
do {
println(languages[i++])
} while (i < languages.size)
i = 0
println("==========\nwhile loop: ")
while (i < languages.size) {
println(languages[i++])
}
}
//result:
for loop:
c++
Java
Kotlin
C
Python
==========
do...while loop:
c++
Java
Kotlin
C
Python
==========
while loop:
c++
Java
Kotlin
C
Python
Process finished with exit code 0
在kotlin的for (...)
中的形式并不是像Java那样的for (int i = 0; i < size; i++) {...}
,而是采用了for (i in [区间])
的写法。有人问了,那要是递减或者有间隔的数怎么办,那好办:
fun main(args: Array<String>) {
val languages = arrayListOf("c++",
"Java", "Kotlin", "C", "Python")
println("down for loop: ")
for (i in (languages.size - 1) downTo 0) {
println(languages[i])
}
println("down with step for loop: ")
for (i in (languages.size - 1) downTo 0 step 2) {
println(languages[i])
}
}
//result:
down for loop:
Python
C
Kotlin
Java
c++
down with step for loop:
Python
Kotlin
c++
Process finished with exit code 0
只要在for (...)
里面加上加上downTo
step
关键字就可以了。其实for
循环还可以这么用:
fun main(args: Array<String>) {
val languages = arrayListOf("c++",
"Java", "Kotlin", "C", "Python")
println("for loop: ")
for (i in languages.withIndex()) {
println("index: ${i.index}, value: ${i.value}")
}
}
//result:
for loop:
index: 0, value: c++
index: 1, value: Java
index: 2, value: Kotlin
index: 3, value: C
index: 4, value: Python
Process finished with exit code 0
在循环中,kotlin也支持传统的break
、 continue
来控制循环。
迭代map
:
fun main(args: Array<String>) {
val binaryReps = TreeMap<Char, String>()//用TreeMap存储字母A到F的二进制和对应的字符串
for (c in 'A'..'F') {//区间迭代
val binary = Integer.toBinaryString(c.toInt())//转换成ASCII码二进制
binaryReps[c] = binary//存入Map中
}
for ((letter, binary) in binaryReps) {//Map迭代访问,括号里左边是key右边是value
println("$letter = $binary")
}
}
//result:
A = 1000001
B = 1000010
C = 1000011
D = 1000100
E = 1000101
F = 1000110
Process finished with exit code 0