1. 程式人生 > >kotlin 中的 "for" 迴圈和迭代map

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