1. 程式人生 > 實用技巧 >Scala(四)【集合】

Scala(四)【集合】

目錄

一.Array

package com.bigdata.scala.day01

/**
 * @description: 不可變陣列&&可變陣列
 * @author: HaoWu
 * @create: 2020/7/24 
 */
object $10_Array {
  def main(args: Array[String]): Unit = {
    //**************************不可變陣列*********************************//
    //1.建立
    val arr1 = new Array[String](10) //方式一
    val arr2 = Array[String]("aaa", "bbb", "ccc") //方式二

    //2.新增
    val arr3 = arr2.+:("ddd") //新增元素,返回新陣列
    val arr4 = arr2.++(arr3) //新增陣列,返回新陣列
    arr4(0) = "eee" //修改元素

    //3.查詢
    val str: String = arr4(0) //根據索引,獲取單值
    arr4.foreach(x => println(x)) //遍歷

    //4.刪除
    val arr5: Array[String] = arr2.drop(2) //刪除前2個元素

    //5.轉可變陣列
    val buffer = arr5.toBuffer

    //********************************可變陣列*******************************//
    //1.建立
    import scala.collection.mutable.ArrayBuffer //匯入可變的包
    val muarr: ArrayBuffer[String] = new ArrayBuffer[String](10) //方式一
    val muarr1: ArrayBuffer[String] = ArrayBuffer("aaa", "bbb", "ccc") //方式二

    //2.新增
    val muarr2 = muarr1.+:("eee") //新增元素,返回新陣列
    muarr1.+=:("eee") //可變陣列新增單個元素
    muarr1.append("hhh", "iii") //可變陣列後添加個元素
    muarr1.++=(ArrayBuffer("fff", "ggg")) //可變陣列新增陣列
    muarr1.insert(1, "abc", "bcd") //從索引位置開始新增多個元素

    //3.查詢
    muarr1.foreach(println(_))

    //4.修改
    muarr1(2) = "dfg" //根據索引更新單個元素

    //5.刪除
    muarr1 - "aaa" //根據值,刪除單個元素
    muarr1.remove(1) //根據索引,刪除單個元素
    muarr1 --= ArrayBuffer("bbb", "ccc") //根據值,刪除多個元素
    val muarr11 = muarr1 -- ArrayBuffer("bbb", "ccc") //根據值,刪除多個元素,返回新陣列

    //6.轉不可變陣列
    val array = muarr1.toArray

    //********************************多維陣列*******************************//
    //建立
    val dimArr: Array[Array[Int]] = Array.ofDim[Int](2,3)
    //遍歷
    dimArr.foreach(x=>x.foreach(y=>println(y)))
  }
}

二. List

package com.bigdata.scala.day01

/**
 * @description: 不可變List&&可變List
 * @author: HaoWu
 * @create: 2020/7/24 
 */
object $09_List {
  def main(args: Array[String]): Unit = {
    //**************************不可變List*********************************//
    //1.建立
    val list = List(1, 2, 3, 4, 5, 6) //設定值
    var list1: List[Int] = Nil //建立,設定空list

    //2.新增
    val list2 = list.+:(7) //在前新增單個元素,返回List
    val list3 = list.:+(8) //在後新增單個元素,返回List
    val list4 = list.::(9) //在後新增單個元素,返回List
    val list5 = 9 :: list //在前新增單個元素,返回List
    val list6 = list ::: List(1, 2, 3) //在後新增集合,返回List
    val list7 = List(1, 2, 3) ::: list //在前新增集合,返回List

    //3.查詢
    list.foreach(x => println(x))

    //**************************可變List*********************************//
    //1.建立
    import scala.collection.mutable.ListBuffer //導包
    val listBuffer = ListBuffer(1, 2, 3, 4, 5)

    //2.新增
    listBuffer.+=(1, 2, 3) //在後新增多個元素
    listBuffer ++= List(7, 8, 9) //在後新增集合元素

    //3.查詢
    listBuffer.foreach(x => println(x))

    //4.刪除
    listBuffer.remove(1) //根據索引刪除單個元素
    listBuffer -= 4 //刪除第一個元素,4代表第4個元素
    listBuffer --= List(1,3,5) //刪除包含集合中的元素
  }
}

三.Set

package com.bigdata.scala.day01

/**
 * @description: TODO
 * @author: HaoWu
 * @create: 2020年07月24日
 */
object $11_Set {
  def main(args: Array[String]): Unit = {
    //**************************不可變Set*********************************//
    //1.建立
    val set = Set(1, 2, 3, 4)

    //2.新增
    val set1 = set + (8, 9, 10) //新增元素,個數可變
    val set2 = set ++ Set(4, 5, 6) //新增Set

    //3.查詢
    set.foreach(println(_))

    //4.刪除
    val set3 = set1 - (8, 9) //刪除元素,個數可變
    val set4 = set2 -- Set(4, 5) //刪除Set

    //**************************可變Set*********************************//
    //1.建立
    import scala.collection.mutable.Set //導包
    val muSet = Set(1, 2, 3)

    //2.新增
    muSet += 4 //新增單個元素
    muSet ++= Set(5, 6) //新增Set集合

    //3.查詢
    muSet.foreach(x => println(x))
    
    //4.刪除
    muSet -= 10 //刪除單個元素
    muSet --= Set(5,6) //刪除Set集合
  }
}

四.Tuple

package com.bigdata.scala.day01

/**
 * @description: TODO
 * @author: HaoWu
 * @create: 2020年07月24日
 */
object $13_Tuple {
  def main(args: Array[String]): Unit = {
    //1.建立
    val tuple = ("zhangsan", 20, "Beijing") //Tuple3型別
    val tuple1 = ("name", "lisi") //對偶元祖,Tupl2型別
    val tuple2 = ("name" -> "lisi")
    val tuple3 = List[(String, Int, String)](
      ("zhangsan", 20, "beijing"),
      ("lisi", 30, "shenzhen")) //集合元素是元祖

    //2.查詢
    val value1 = tuple._1
    val value2 = tuple._2
    val value3 = tuple._3
  }
}

五.Map

package com.bigdata.scala.day01

/**
 * @description: TODO
 * @author: HaoWu
 * @create: 2020年07月24日
 */
object $12_Map {
  def main(args: Array[String]): Unit = {
    //**************************不可變Map*********************************//
    //1.建立
    val map = Map[String, String](
      "name" -> "zhangsan",
      "age" -> "20",
      "address" -> "BeiJing") //方式一
    val map2 = Map[String, String](
      ("name", "lisi"),
      ("age", "30"),
      ("address", "ShenZhen")) //方式二

    //2.新增/修改
    val map11 = map.+("email" -> "1001", "id" -> "11") //新增元素
    val map21 = map2 + (("dept", "11")) //新增元素
    val map22 = map2.++(map) //新增Map

    //3.查詢
    val value = map11.getOrElse("email", "null") //根據key獲取值,key不存在值設null
    map.foreach(x => println(x._1)) //遍歷key
    map.keys.foreach(x => println(x)) //遍歷key
    map.values.foreach(x => println(x)) //遍歷value

    //**************************可變Map***********************************//
    //1.建立
    import scala.collection.mutable.Map
    val muMap = Map[String, String](
      ("name", "lisi"),
      ("age", "20")) //方式一
    val muMap2 = Map[String, String](
      ("name", "lisi"),
      ("age", "30")) //方式二

    //2.新增/修改
    muMap += (("address", "Henan")) //新增單個元素
    muMap2 += ("address" -> "Henan") //新增單個元素

    //3.查詢
    val value1 = muMap.getOrElse("email", "null") //根據key獲取值,key不存在值設null
    muMap.foreach(x => println(x._1)) //遍歷key
    muMap.keys.foreach(x => println(x)) //遍歷key
    muMap.values.foreach(x => println(x)) //遍歷value

    //4.刪除
    muMap -= "name"
  }
}