Scala入门(三)数据结构

和java一样,scala也提供了List,Map等数据结构,下边我们逐一介绍:

1.数组Array

非常简单,一看就懂,需要注意的是,scala操作数组下标用的是圆括号,而不是方括号。

val arr = new Array[Int](3)  //声明一个长度为3的整型数组,注意每个元素初始值为0
arr(0) = 1 //给第1个元素赋值为1
arr(1) = 2  //给第2个元素赋值为2
arr(2) = 3 //给第3个元素赋值为3

当然,也可以这样声明:

val arr = Array("zhangsan","lisi","wangwu")
2.列表List

声明方式:

val intList = List(1,2,3,4,5)

scala的List有头部和尾部的概念,例如上边这个List,我们可以用intList.head来获取这个列表的头部,是1。也可以用intList.tail获取这个列表的尾部,是2,3,4,5。可以看出,头部是一个元素,而尾部则仍然是一个列表。

由于头部是一个元素,我们可以用::操作,在列表头部插入元素,形成一个新列表:

val list2 = 0::intList
val list3 = 0::1::2::3::intList

注意,list2和list3是新列表,原列表intList不会有变化。
当我们需要合并两个列表时,应该使用:::操作

val list1 = List(1,2,3)
val list2 = List(4,5,6)
val list3 = list1:::list2
3.映射Map

声明方法,非常清晰:

val prices = Map("铅笔"->20,"橡皮"->10,"直尺"->15)

注意上边这种方法,我们是生成了一个不可变的Map,无法更新元素,如果要生成可变Map,应该用下边这种方法:

import scala.collection.mutable.Map
val prices = Map("铅笔"->20,"橡皮"->10,"直尺"->15)

修改:

prices("橡皮") = 9

新增:

prices += ("胶带"-)

取值:

prices("铅笔")

遍历Map:
遍历方式和java8的lambda非常类似:

for((k,v) <- prices) printfln("key id %d, value is %d",k,v)

只遍历key:

for(k <- prices.keys)

只遍历value:

for(k <- prices.values)
4.集合Set

与java一样,为同类型不重复元素的聚集:
不可变集合声明:

var mySet = Set("Hadoop","Spark")

可变集合声明:

import scala.collection.mutable.Set
val myMutableSet = Set("zhangsan","lisi")
5.元组tuple

如果你用过python,对元素会很熟悉,元组是不同类型的值的聚集:

val tuple = ("hello",20,1.30,false)

访问元组中的元素:

println(tuple._1)
println(tuple._2)
println(tuple._3)
6.迭代器Iterator

在scala中,迭代器Iterator不是集合,而是提供了一个访问集合的方法,当构建一个集合需要很大的开销时,迭代器就可以发挥很好的作用。
迭代器有两个基本操作:next和hasNext。与java一样,next可以返回下一个元素,hasNext用于检测是否还有下一个元素。直接看代码:

val iter = Iterator("zhangsan","lisi","wangwu")
while (iter.hasNext) {
    println(iter.next())
}
val iter = Iterator("zhangsan","lisi","wangwu")
for (elem <- iter) {
    println(elem)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值