scala常用集合使用

一、定长数组Array,长度不可变

val array1=new Array[Int](5) //常规定义方法
array1(1)=1;  //赋值第2个元素的值,注意数组下标是从0开始的
println(array1(1));
val array = Array(1,2,3,4,5) //直接带初始化赋值的方式,其实调用的是apply方法
println(array(1));//使用下标的方式访问数组中的原始,下标从0开始
array.foreach(println) //打印集合的所有元素 ***

二、变长数组ArrayBuffer,长度可变
import scala.collection.mutable.ArrayBuffer   
val c=ArrayBuffer[Int]() //变成数组定义
c ++= Array(1,2,3) //++= 是一个方法,可以追加多个元素
c +=4; //+= 也是一个方法,追加一个元素,此处追加的元素为4
c -= 1 //-= 表示把第一次出现的哪个元素移除,有多个存在时,只移除第一个,此处移除的元素是1
for(i <- 0 until(c.length, 2)) {//采用下标方式,访问元素,此处采用步长为2进行访问
println(c(i))
}

for(ele <- c) { //集合遍历所有元素,建议使用的方式 *****
println(ele)
}

三、定长列表List
// 构造列表的两个基本单位是 Nil 和 ::,Nil 表示一个空列表,::为连接符
//连接列表::: 、 List.:::() 或 List.concat() 方法来连接两个或多个列表
val list=List(1,2,3) //定义方式一
println(list(2))  //列表访问方式
val list1 = 1::2::3::4::Nil //定义方式二
四、变 长列表 ListBuffer
//-------------变长列表ListBuffer,方法与ArrayBuffer类似
import scala.collection.mutable.ListBuffer
val list2=ListBuffer[Int]()
list2 ++= list
list2 ++= list1
list2.foreach(print) //打印列表中的每个元素
list2 -= (1,4) //移除第一次出现的元素1和4,有多个存在时,只移除第一个
list2.foreach(print)
五、Map & HashMap
/*
scala map:
Map(映射)是一种可迭代的键值对(key/value)结构。
所有的值都可以通过键来获取。
Map 中的键都是唯一的。
Map 也叫哈希表(Hash tables)。
Map 有两种类型,可变与不可变,区别在于可变对象可以修改它,而不可变对象不可以。
默认情况下 Scala 使用不可变 Map。如果你需要使用可变集合,你需要显式的引入 import scala.collection.mutable.Map 类
在 Scala 中 你可以同时使用可变与不可变 Map,不可变的直接使用 Map,可变的使用 mutable.Map。
*/

//-------------不可变Map
val a = Map("ruoze"->30, "dove"->2) //默认使用的是不可变Map
a.foreach(println) //依次打印所有元素
println(a("ruoze")) //获取某个key的值,等价于 a.get("ruoze").get
println(a.get("ruoze").get)

//-------------可变Map
val b = scala.collection.mutable.Map("ruoze"->30, "dove"->2)
b +=("zhangsan"->4, "wangwu" ->5) //增加键值对的方法

val m = scala.collection.mutable.HashMap[String,Int]()
m +=("dove"->3, "zhangsan"->4, "wangwu" ->5)
for((key,value) <- m) { //遍历所有的key/value
println(key + " : " + value)
}
for(key <- m.keySet){//遍历所有的key,通过key可以获得value
println(key + " : " + m.getOrElse(key, 0))
}
for(value <- m.values) {//遍历所有的value
println(value)
}
for((key,_) <- m) {
println(key + " : " + m.getOrElse(key, 0))
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值