美文网首页kotlin 笔记KotlinKotlin编程
kotlin 中的 "for" 循环和迭代m

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

作者: shenshizhong | 来源:发表于2017-09-15 10:38 被阅读602次

    文章目录

    • 场景
    • "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

    相关文章

      网友评论

        本文标题:kotlin 中的 "for" 循环和迭代m

        本文链接:https://www.haomeiwen.com/subject/jbrjsxtx.html