kotlin 中的 "for" 循环和迭代map

文章目录
● 场景
● “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 的优势:
● 使用范围更广泛了(..语法可以创建字符区间)
● 代码更简洁,干练

如果对你有一点点帮助,请点个赞,你的鼓励就是我写作的动力。谢谢!
欢迎长按下图 -> 识别图中二维码 或者 扫一扫 关注我的公众号:
shenshizhong.png

我的csdn:http://blog.csdn.net/shenshizhong
我的简书:http://www.jianshu.com/u/345daf0211ad

猜你喜欢

转载自blog.csdn.net/shenshizhong/article/details/77989011