Spark 3.x大数据分析实战(视频教学版)
上QQ阅读APP看书,第一时间看更新

1.3.4 循环

Scala中的循环主要有三种:for循环、while循环和do while循环。

1. for循环

for循环的语法如下:

    for(变量<-集合或数组){
      方法体
    }

表示将集合或数组中的每一个值循环赋给一个变量。

例如,循环从1到5输出变量i的值,代码如下:

    scala> for(i<- 1 to 5) println(i)
    1
    2
    3
    4
    5

1 to 5表示将1到5的所有值组成一个集合,且包括5。若不想包括5,则可使用关键字until,代码如下:

    scala> for(i<- 1 until 5) println(i)
    1
    2
    3
    4

使用这种方式可以循环输出字符串。例如,将字符串“hello”中的字符循环输出,代码如下:

    scala> val str="hello"
    str: String = hello
       
    scala> for(i<-0 until str.length) println(str(i))
    h
    e
    l
    l
    o

还可以将字符串看作一个由多个字符组成的集合,因此上面的for循环写法可以简化,代码如下:

    scala> for(i<-str) println(i)
    h
    e
    l
    l
    o

Scala的嵌套循环比较简洁,例如以下代码,外层循环为i<‒1 to 3,内层循环为j<‒1 to 3 if (i!=j),中间使用分号隔开:

    scala> for(i<-1 to 3;j<-1 to 3 if (i!=j)) println(j)
    2
    3
    1
    3
    1
    2

上述代码等同于以下Java代码:

    for (int i = 1; i <= 3; i++) {
      for (int j = 1; j <= 3; j++) {
       if(i!=j){
         System.out.println(j);
       }
      }
    }

2. while循环

Scala的while循环与Java类似,语法如下:

    while(条件)
    {
       循环体
    }

例如以下代码:

    scala> var i=1
    i: Int = 1
       
    scala> while(i<5){
        |  i=i+1
        |  println(i)
        | }
    2
    3
    4
    5

3. do while循环

与Java语言一样,do while循环与while循环类似,但是do while循环会确保至少执行一次循环。语法如下:

    do {
       循环体
    } while(条件)

例如以下代码:

    scala> do{
         |    i=i+1
         |    println(i)
         | }while(i<5)
    2
    3
    4
    5