(Windows)Scala学习3--列表、数组

  • 列表

我们先声明一个列表:

val list = List(1,2,3)

 list.head即列表的头,值为1;list.tail即列表的尾,值为(2,3),是一个新的列表

给列表增加值,可以选择在前加,例如:

val list = List(1,2,3)
val listOther = 0::list

 或者

val list = List(1,2,3)
val listOther = 0+:list

 结果为:

list(0,1,2,3)

list不会改变,改变的是listOther

在列表后面加:

val list = List(1,2,3)
val listOther = list:+0

 结果为:

list(1,2,3,0)

 总之不管是“+:”还是“:+”,“:”永远在列表那侧。

在学习Scala列表,进行两个列表拼接时遇到很多问题,在反复试验近半小时后,得出一种稳定不会报错的定义列表的格式:

val site1 = 1::2::3::Nil
    val site2 = 4::5::Nil

    val site3 = "wang"::"jing"::Nil
    val site4 = "si"::Nil
   // 使用 ::: 运算符
    var Site1 = site1 ::: site2
    println( "site1 ::: site2 : " + Site1 )
    //使用++
    var Site11 = site1 ++ site2
    println( "site1 ::: site2 : " + Site11 )
    // 使用 List.:::() 方法
    Site1 = site1.:::(site2)
    println( "site1.:::(site2) : " + Site1 )
    //求和
    val a = Site1.sum
    println(a)
    //字符串连接
    var Site2 = site3 ::: site4
    println( "site3 ::: site4 : " + Site2 )

 运行结果:

site1 ::: site2 : List(1, 2, 3, 4, 5)
site1 ::: site2 : List(1, 2, 3, 4, 5)
site1.:::(site2) : List(4, 5, 1, 2, 3)
15
site3 ::: site4 : List(wang, jing, si)
  • 数组
 1 object demo {
 2   def main(args: Array[String]): Unit = {
 3    val value = new Array[Int](3)
 4     value(0)= 1
 5     value(1)=2
 6     value(2)=3
 7     val str = new Array[String](3)
 8     str(0)="BigData"
 9     str(1)="Hadoop"
10     str(2)="Spark"
11     for(i<-0 to 2){
12       println(str(i))
13     }
14     for(i<-0 to 2){
15       println(value(i))
16     }
17 
18 
19   }
20 }

结果:

BigData
Hadoop
Spark
1
2
3
原文地址:https://www.cnblogs.com/wjwjs/p/10467201.html