一、數組
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())
}
}