1.Scala 汇合概述

Scala有三类汇合:序列Seq、Set、映射Map。
Scala中,简直所有的汇合,都提供可变和不可变两个版本。

个别,咱们依据汇合所在的包来辨别是可变汇合还是不可变汇合。

  • scala.collection.immutable 不可变汇合
  • scala.collection.mutable 可变汇合

2.Scala 汇合

2.1 数组

2.1.1 不可变数组

object Scala_Coll {  def main(args: Array[String]): Unit = {    // Scala 数组 - 不可变    // 1. 创立数组对象    // 形式一    // new Array[String](5) 编译后会生成java的数组代码    val array = new Array[String](5)    // 形式二    val array1 = Array(1,2,3,4)    // 2. 打印数组    println(array) // 输入后果 [Ljava.lang.Object;@4cdbe50f    // 3.数组赋值,Scala下标索引应用小括号    array(0) = "张三"    array(1) = "李四"    array(2) = "王五"    array(3) = "赵六"    // 4.采纳update形式批改数组的值    array.update(4,"哈哈")    // 5.查看数组    println(array.mkString(","))    // 6.遍历数组- 形式1    for(i<-array){      println(i)    }    // 7.遍历数组 - 形式2    //  array.foreach(i => println(i)) 精简为    array.foreach(println)    /////// 数组操作 ///////    // 1)增加数组元素,不可变数组增加数组元素后,返回一个新的数组,自身不会产生扭转    // :+ 增加元素到尾部    val arr1 = array :+ 5    // +: 增加元素到首部    val arr2 = arr1.+:(5)    // ++ 增加数组    val arr3 = arr1 ++ arr2      }}

2.1.2 可变数组

import scala.collection.mutable.ArrayBufferobject Scala_Coll {  def main(args: Array[String]): Unit = {    // 1.申明可变数组:scala.collection.mutable.ArrayBuffer    // 形式1    val arr1 = new ArrayBuffer[Int]()    // 形式2    val arr2 = ArrayBuffer(1,2,3,4)    // 2.减少数据    arr1.append(4,5,6,7)    println(arr1.mkString(","))    // 3.批改数据    arr1.update(1,10)    println(arr1.mkString(","))    // 4.删除数据    arr1.remove(1,2) //从索引地位1开始删除2个数据    println(arr1.mkString(","))    // 5.查问数据    println(arr1(1))    // 6.遍历汇合    arr1.foreach(println)    // 7. ++ 运算符会产生新的汇合数组    val arr3 = arr1 ++ arr2    println(arr3.mkString(","))    // 8. ++= 运算符则更新之前汇合,并不产生新的数组    arr1 ++= arr2    println(arr1.mkString(","))      }}

2.1.3 可变数组和不可变数组的相互转换

import scala.collection.mutable.ArrayBufferobject Scala_Coll {  def main(args: Array[String]): Unit = {    val arr1 = Array(1,2,3,4)    // 将不可变数组arr1转换为可变数组    val arr2 = arr1.toBuffer    // 将可变数组arr2转换为不可变数组    val arr3 = arr2.toArray  }}

2.2 Seq汇合

2.2.1 不可变list

object Scala_Coll {  def main(args: Array[String]): Unit = {    // 不可变list    // 1.申明对象    val list = List(1, 2, 3, 4)    // 2.减少元素,返回新的list    val list1 = list :+ 1    // 3.遍历list    list1.foreach(println)    // 4.空集合Nil    // 个别用于减少数据    val list2 = 1 :: 2 :: 3 :: 4 :: Nil    println(list2.mkString(","))    // 增加汇合    val list3 = 1 :: 2 :: 3 :: list1 :: Nil    println(list3.mkString(",")) // 输入后果 1,2,3,List(1, 2, 3, 4, 1)    // 咱们须要将list1的元素作为一个一个的个体应用,也就是扁平化操作    val list4 = 1 :: 2 :: 3 :: list1 ::: Nil    println(list4.mkString(",")) // 输入后果 1,2,3,1,2,3,4,1    // 5.连贯汇合    val list5 = List.concat(list3, list4)    list5.foreach(println)    // 6.创立一个指定反复数量的列表    val list6 = List.fill[String](3)("Hello")    list6.foreach(println)  }}

2.2.2 可变list

import scala.collection.mutable.ListBufferobject Scala_Coll {  def main(args: Array[String]): Unit = {    // 1.可变list    var list1 = new ListBuffer[Int]    // 2.减少数据    list1.append(1,2,3,4)    val list2 = list1 :+ 5    list1+=5    println(list1.mkString(","))    println(list2.mkString(","))    val list3 = list1 ++ list2    println(list3.mkString(","))    // 3.批改数据    list1.update(1,10)    println(list1(1))    // 4.删除数据    list1.remove(1,2)    println(list1.mkString(","))    // 5.获取数据    println(list1(1))  }}

2.2.3 可变list和不可变list的互相转换

import scala.collection.mutable.ListBufferobject Scala_Coll {  def main(args: Array[String]): Unit = {    // 创立一个不可变汇合    var list = List(1,2,3,4)     // 将不可变汇合转变为可变汇合    val buffer = list.toBuffer    // 将可变汇合buffer转变为不可变汇合    val list1 = buffer.toList  }}

2.3 Map映射

2.3.1 不可变Map

import scala.collection.mutable.ListBufferobject Scala_Coll {  def main(args: Array[String]): Unit = {    // 1.创立Map 两种形式    val map1 = Map("a"->"张三","b"->"李四","c"->"王五")    val map2 = Map(("a","张三"),("b","李四"),("c","王五"))    println(map1)    println(map2)    // 2.增加数据    val map3 = map1 + ("d" -> "张三丰")    println(map3)    // 3.删除数据    val map4 = map3 - "d"    println(map4)    // 4.批改数据    val map5 = map4.updated("b", "黄蓉")    println(map5)    // 5.遍历    map5.foreach(println)    // 6.获取指定key的值    val str = map5.apply("a")    println(str)    // 7.获取可能存在的key值    val maybeString:Option[String] = map5.get("a")    println(maybeString.get) // 如果是从None值获取会产生异样    println(maybeString.getOrElse(-1)) // 如果获取到返回值,获取不到返回默认值    // 更加简洁的用法    val value = map5.getOrElse("d", -1)    println(value)      }}

2.3.2 可变Map

import scala.collection.mutableobject Scala_Coll {  def main(args: Array[String]): Unit = {    // 申明可变Map    val map1 = mutable.Map("a" -> "郭靖", "b" -> "黄蓉")    val map2 = mutable.Map(("a","杨过"),("b","小龙女"))    // 增加数据    map1.put("c","郭襄")    val map3 = map1 + ("d" -> "郭芙")    map1 += ("d"->"郭芙")    // 批改数据    map1.update("d","郭破虏")    map1("d") = "郭芙"    // 删除数据    map1.remove("d")  }}

2.4 元组

object Scala_Coll {  def main(args: Array[String]): Unit = {    // 元组能够看成是包容元素的容器,最多能够包容22个元素    // 申明一个元组    val tuple = (1, "a", "张三丰", 18)    // 元组中的数据能够通过数据的程序来拜访    println(tuple._1)    println(tuple._2)    println(tuple._3)    println(tuple._4)    // 元组遍历    val iterator = tuple.productIterator    while (iterator.hasNext){      println(iterator.next())    }    // 对偶元组:只有两个元素,也能够叫键值对    val map = Map(("a", "张三丰"), ("b", "张翠山")) //这种申明形式,外面就是对偶元组  }}