数组
//数组
//val 不可改变描述的是引用
val array =Array[Int](1,2,3,4,5)
array(1) = 5
println(array(1))
for(a<-array){
print(a)
}
array.foreach(print)
println()
链表
//链表
val list =List(1,2,3,4,5)
for (a <- list){
print(a)
}
list.foreach(print)
println()
val listbuffer = ListBuffer("1","2","3","4","5")
val listbuffer01 = ListBuffer("6","7","8","9","0")
//可变的列表添加元素
listbuffer.+=("11")
listbuffer.append("11")
//删除第一个出现的
listbuffer.-=("2")
//++ 两个数组相加 返回一个新的数组
// var listbuffer03 = listbuffer.++(listbuffer01)
var listbuffer03 = listbuffer++listbuffer01
println(listbuffer01)
println(listbuffer03)
println(listbuffer)
//.++ 在链表头加一个元素
var listbuffer04 = listbuffer.++:("8")
println(listbuffer04)
//在链表尾部 添加一个元素
var listbuffer05 = listbuffer.:++("8")
println(listbuffer05)
//listbuffer.foreach(print)
set
//set
val set01 = scala.collection.immutable.Set(1,2,3,4,5)
//不可变
//set01.+=(8)
val set02 = scala.collection.mutable.Set(1,2,3,4,5)
set02.+=(1)
set02.foreach(println)
tuple
//tuple 一共有22个。。
val tuple2 =Tuple2(1,"2")
//tuple 可变参数 可以是任意类型
val tp3 = Tuple3((a: Int, b: Int) => {
a + b
}, "2", "3")
//取值
println("-----")
println(tuple2._1)
val val1 = tp3._1(1, 2)
println(s"$val1")
println("-----")
val iterator = tp3.productIterator
while (iterator.hasNext){
println(iterator.next())
}
map
//map
val map01 = Map(("1", 1), "2" -> 2, ("3", 3), ("1", 4))
map01.foreach(println)
val iterator1 = map01.keys.iterator
//返回的是Spme(4) Option类型子类型有一个none 一个Some
println(map01.get("1"))
println(map01.get("1").get)
//报错 因为返回的是None
println(map01.get("8"))
// 判断如果是None 则返回默认值 少了ifelse判断
println(map01.get("8").getOrElse("1235"))
val map2 = scala.collection.mutable.Map(("1", 1), "2" -> 2, ("3", 3), ("1", 4))
map2.put("1",3)
println(map2)
集合的map方法和flatmap 方法处理数据集合
//数据操作,不会影响到原有的list
val list01 = List(1, 2, 3, 4, 5)
val lit001 = list01.map((a: Int) => a + 10)
val lit002 = list01.map(_ * 10)
println(lit001)
println(lit002)
//flatMap 对单个元素处理 形成新的list
//Array Set 同样适用
val list03 = List("hello world", "hello cher")
val liwst031 = list03.flatMap((a: String) => a.split(" "))
println(liwst031)
val list032 = liwst031.map((a: String) => (a, 1))
println(list032)
上面的方法会存有中间集合,浪费内存,如果不像保留中间集合 可以使用iterator
// 但是会存在效率问题 中间存了大量的转换集合 可以改为iterator
val list04iteratot = List("hello world", "hello cher").iterator
val ist041iteratot = list04iteratot.flatMap((a: String) => a.split(" ")).iterator
ist041iteratot.foreach(println)
val list042iterator = liwst031.map((a: String) => (a, 1)).iterator
list042iterator.foreach(println)
iterator 集合只保存数据的指针,不保存数据, flatmap采用迭代方式取数据,处理完一个在处理下一个
![](https://i-blog.csdnimg.cn/blog_migrate/d0f00f1f06624c1df5bfbedd501e0b21.png)