天天看點

Scala語言入門三(集合)

一、數組

Scala 語言中提供的數組是用來存儲固定大小的同類型元素,數組對于每一門編輯應語言來說都是重要的資料結構之一。數組的第一個元素索引為0,最後一個元素的索引為元素總數減1

1、聲明數組

  • 不可變數組
/**
 * @author Gjing
 **/
object ArrayApp {

  def main(args: Array[String]): Unit = {
    // 聲明一個長度為2的不可變數組
    val arr = new Array[String](2)
    // 指派
    arr(0) = "java"
    arr(1) = "scala"

    // 使用另外一種方式聲明數組
    val arr2 = Array("java","scala")
  }
}           
/**
 * @author Gjing
 **/
object ArrayApp {

  def main(args: Array[String]): Unit = {
    val buffer = ArrayBuffer[String]()
    // 追加一個值
    buffer += "java"
    // 追加一個數組
    buffer ++= Array("scala", "vue")
  }
}           

2、數組的處理

列出常見的一些操作,其餘的自行查閱文檔

  • 循環輸出
/**
 * @author Gjing
 **/
object ArrayApp {

  def main(args: Array[String]): Unit = {
    val arr = Array("java", "scala")
    for (x <- arr) {
      println(x)
    }
  }
}           
  • 合并數組
/**
 * @author Gjing
 **/
object ArrayApp {

  def main(args: Array[String]): Unit = {
    val arr = Array("java", "scala")
    val arr2 = Array("vue", "go")
    // 這種方式需要引入 import Array._
    val arr3 = concat(arr, arr2)
    // 直接調用
    val arr4 = arr.concat(arr2)
  }
}           

二、List

List的特征是其元素以線性方式存儲,集合中可以存放重複對象。

1、建立List

  • 定長list
/**
 * @author Gjing
 **/
object ListApp {

  def main(args: Array[String]): Unit = {
    // 數字清單
    var l1 = List(1, 2, 3, 4)
    var l2 = 1 :: 2 :: 3 :: Nil
    // 生成空清單
    var l3 = Nil
  }
}           

構造清單的兩個基本機關是 Nil 和 ::

Nil 也可以表示為一個空清單。

  • 不定長
/**
 * @author Gjing
 **/
object ListApp {

  def main(args: Array[String]): Unit = {
    val l = ListBuffer[Int]()
    // 加一個元素
    l += 2
    // 加入多個元素
    l += (3,4)
    // 加入一個集合
    l ++= List(5,6)
    // 列印 2,3,4,5,6
    println(l.mkString(","))
  }
}           

2、清單的操作

  • 基本操作(傳回第一個元素、傳回第一個元素以外的清單、判斷清單是否為空)
/**
 * @author Gjing
 **/
object ListApp {

  def main(args: Array[String]): Unit = {
    var l = List(1,2,3)
    // 列印 1
    println(l.head)
    // 列印 List(2,3)
    println(l.tail)
    // 列印false
    println(l.isEmpty)
  }
}           
  • 拼接
/**
 * @author Gjing
 **/
object ListApp {

  def main(args: Array[String]): Unit = {
    val l1 = List(1, 2, 3)
    val l2 = List(3,4)
    val l3 = l1 ::: l2
    // 較第一種是後者加進去後再清單前面
    val l4 = l1.:::(l2)
    val l5 = List.concat(l1,l2)
    println(l3.mkString(","))
    println(l4.mkString(","))
    println(l5.mkString(","))
  }
}           
  • 清單反轉
/**
 * @author Gjing
 **/
object ListApp {

  def main(args: Array[String]): Unit = {
    val l1 = List(1, 2, 3)
    // 列印 3,2,1
    println(l1.reverse.mkString(","))
  }
}           
  • 建立一個指定重複數量的元素清單
/**
 * @author Gjing
 **/
object ListApp {

  def main(args: Array[String]): Unit = {
    val l1 = List.fill(2)(1)
    // 列印 1,1
    println(l1.mkString(","))
  }
}           

三、Set

Set是最簡單的一種集合。集合中的對象不按特定的方式排序,并且沒有重複對象, 用法和list差不多,這裡不過多介紹

四、Map

Map 是一種把鍵對象和值對象映射的集合,它的每一個元素都包含一對鍵對象和值對象。Map 有兩種類型,可變與不可變,差別在于可變對象可以修改它,而不可變對象不可以。預設情況下 Scala 使用不可變 Map。如果你需要使用可變集合,你需要顯式的引入

import scala.collection.mutable.Map 類在 Scala 中 你可以同時使用可變與不可變 Map,不可變的直接使用 Map,可變的使用 mutable.Map

1、建立Map

/**
 * @author Gjing
 **/
object MapApp {
  def main(args: Array[String]): Unit = {
    // 空map
    val m1 = Map()
    // 存在鍵值對
    var m2 = Map("名字" -> "張三", "年齡" -> 12)
    println(m2.mkString(","))
    // 加一個新的鍵值對進去
    m2 += ("性别" -> "男")
    println(m2.mkString(","))
  }
}           

2、基本操作

/**
 * @author Gjing
 **/
object MapApp {
  def main(args: Array[String]): Unit = {
    var m2 = Map("名字" -> "張三", "年齡" -> 12)
    // 傳回所有key
    println(m2.keys)
    // 傳回所有value
    println(m2.values)
    // 判斷是否為空
    println(m2.isEmpty)
  }
}           

3、合并

你可以使用 ++ 運算符或 Map.++() 方法來連接配接兩個 Map,Map 合并時會移除重複的 key

/**
 * @author Gjing
 **/
object MapApp {
  def main(args: Array[String]): Unit = {
    val map1 = Map("年齡" -> "12")
    val map2 = Map("性别" -> "男")
    println(map1 ++ map2)
    println(map1.++(map2))
  }
}           

4、檢視 Map 中是否存在指定的 Key

object MapApp {
  def main(args: Array[String]): Unit = {
    var m1 = Map("名字" -> "張三", "年齡" -> 12)
    // 列印 true
    println(m1.contains("名字"))
  }
}           

四、元組

元組是不同類型的值的集合,與清單一樣,元組也是不可變的,但與清單不同的是元組可以包含不同類型的元素

1、定義元組

/**
 * @author Gjing
 **/
object TupleApp {
  def main(args: Array[String]): Unit = {
    val t1 = (1, "呢", 1.1)
    val t2 = new Tuple3(1, "呢", 1.1)
  }
}           

元組的實際類型取決于它的元素的類型,比如 (99, "runoob") 是 Tuple2[Int, String], 目前 Scala 支援的元組最大長度為 22。對于更大長度你可以使用集合,或者擴充元組

2、通路元組

/**
 * @author Gjing
 **/
object TupleApp {
  def main(args: Array[String]): Unit = {
    val t1 = (1, "呢", 1.1)
    // 擷取元組第一個内容
    println(t1._1)
    // 擷取元組第二個内容
    println(t1._2)
  }
}           

3、元組的疊代

/**
 * @author Gjing
 **/
object TupleApp {
  def main(args: Array[String]): Unit = {
    val t1 = (1, "呢", 1.1)
    t1.productIterator.foreach(e => println(e))
  }
}           

4、元組轉字元串

/**
 * @author Gjing
 **/
object TupleApp {
  def main(args: Array[String]): Unit = {
    val t1 = (1, "呢", 1.1)
    println(t1.toString())
  }
}