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){
    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 binaryReqs = new TreeMap();
    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 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){
    val binaryReps = TreeMap()
    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

你可能感兴趣的:(kotlin 中的 "for" 循环和迭代map)