文章目录
- 场景
- "for" 循环
- 迭代map
- 总结
场景
kotlin 中的 "for" 循环和迭代 map 与我们熟知的 java 中的有什么区别呢,有哪些更好的表现形式呢?
"for" 循环
- kotlin "for"循环结构:for (i in a..b)
- a代表起始值,b代表结束值。..表示区间。例如for (i in 1..100)
- 注意:区间是包含的,也就是1到100(包含100)
下面用整数迭代来玩Fizz-Buzz 游戏。注意比较java 与 kotlin 写法区别
//java
package javas;
public class FizzBuzz {
private static String fizzBuzz(int i) {
if(i % 15 == 0){
return "FizzBuzz";
}else if(i % 5 == 0){
return "Buzz";
}else if(i % 3 == 0){
return "Fizz";
}else {
return ""+i;
}
}
public static void main(String[] args){
for (int i = 1; i < 101 ; i++) {
System.out.println(fizzBuzz(i));
}
}
}
//kotlin
package kotlins
fun fizzBuzz(i: Int) = when{
i % 15 == 0 -> "FizzBuzz"
i % 5 == 0 -> "Buzz"
i % 3 == 0 -> "Fizz"
else -> "$i"
}
fun main(args: Array<String>){
for (i in 1..100){//用区间迭代
println(fizzBuzz(i))
}
}
迭代map
- kotlin 迭代 map 的结构: for ((a,b) in map)
- a代表的是 map 的key,b代表的是 map 的 value,a和b是变量,自己命名即可
- ..语法可以用于创建字符区间。例如 for (c in 'A'..'F')
//java
package javas;
import java.util.Iterator;
import java.util.TreeMap;
public class IteratingOverMaps {
private static Character[] chars = new Character[]{'A','B','C','D','E','F'};
private static TreeMap<Character, String> binaryReqs = new TreeMap<Character, String>();
public static void main(String[] args){
for(int i = 0; i < chars.length; i++){
String s = Integer.toBinaryString(chars[i]);
binaryReqs.put(chars[i], s);
}
Iterator<Character> iterator = binaryReqs.keySet().iterator();
while(iterator.hasNext()){
Character key = iterator.next();
String s = binaryReqs.get(key);
System.out.println(key + " = " + s);
}
}
}
//kotlin
package kotlins
import java.util.*
fun main(args: Array<String>){
val binaryReps = TreeMap<Char, String>()
for (c in 'A'..'F'){//创建字符区间
val binary = Integer.toBinaryString(c.toInt()) //将 ASCII 码转化成二进制
binaryReps[c] = binary //根据 key 为c 把 binary 存到 map 中
}
for ((letter, binary) in binaryReps){//迭代 map,把 key 和 value 赋值给变量
println("$letter = $binary")
}
}
总结
通过对比发现 kotlin 的优势
- 使用范围更广泛了(..语法可以创建字符区间)
- 代码更简洁,干练
如果对你有一点点帮助,请点个赞,你的鼓励就是我写作的动力。谢谢!
我的csdn:http://blog.csdn.net/shenshizhong
我的简书:http://www.jianshu.com/u/345daf0211ad