scala集合基础

1)sacla集合有三大类:序列Seq,集Set,映射Map。所有集合都扩展自Iterable特质。
2)对于几乎所有集合类,scala都提供了可变和不可变两种版本。分别位于以下两个包
** 不可变集合:scala.collection.immutable**
** 可变集合: scala.collection.mutable**

不可变集合

图片.png

可变集合

图片.png

数组

不可变数组

1)修改数组值

    a1(0) = 1
    a1.update(0,5)

2)添加元素

    //添加在后面
    val a3 = a1:+5
    println(a3.mkString(","))
   //在前面添加 
   val a4 = 6+:a1
    println(a4.mkString(","))

可变数组(ArrayBuffer)
增加元素

    a1.+=(2,3)
    a1.append(4,5)
    a1+=6
    a1.insert(0,7,8)

修改元素

    a1(1) = 2

可变和不可变数组转换

arr.toBuffer
arr.toArray

注:多维数组最简单创建方式

//二维数组 三行四列   三个一维数组,每个一维数组中有四个元素
val arr = Array.ofDim[Int](3,4)

列表List

不可变List
添加元素

    val list = 1::2::3::4::6::7::Nil
    val list2 = 1::2::Nil.::(3)
    //1234567
    println(list.mkString(","))
    //123
    println(list2.mkString(","))
    //在前面添加
    val list3 = list.+:(5,6,7,8)

列表合并

    val list3 = list:::list2
    val list4 = list++list2

可变ListBuffer

添加

    val buffer = ListBuffer(1,2,3)
      buffer+=4
      buffer.append(5)
      buffer.insert(0,0)

修改

buffer(1) = 6
buffer.update(1,7)

删除

      buffer.remove(1)
      //根据值删除
      buffer-=9

Set

可变

++=
--=
.+=(T)[add()]
.-=(T
)[remove()]

不可变/可变

.+
.++
.-
.--

Map

可变

map.update("d",5)
map("d") = 5
++=
--=
+=(put)
-=(remove)

不可变/可变

.++
.--
.+
.-

getOrElse

元组

元组也是可以理解为一个容器,可以存放各种相同或不同类型的数据。
元组中最大只能有 22 个元素

//( 1)声明元组的方式: (元素 1,元素 2,元素 3)
val tuple: (Int, String, Boolean) = (40,"bobo",true)
//( 2)访问元组
//( 2.1)通过元素的顺序进行访问,调用方式: _顺序号
println(tuple._1)
println(tuple._2)
println(tuple._3)
//( 2.2)通过索引访问数据
println(tuple.productElement(0))
//( 2.3)通过迭代器访问数据
for (elem <- tuple.productIterator) {
println(elem)
}
//( 3) Map 中的键值对其实就是元组,只不过元组的元素个数为 2,称之为
对偶
val map = Map("a"->1, "b"->2, "c"->3)
val map1 = Map(("a",1), ("b",2), ("c",3))
map.foreach(tuple=>{println(tuple._1 + "=" + tuple._2)})
}

注:Set和Map是trait,list是sealed abstract class 所以无法new

你可能感兴趣的:(scala集合基础)