17 scala集合使用
1 陣列的使用
1.1 定長陣列的使用
val arr01 = new Array[Int](4) // 定義一個陣列,型別為Int,長度為4的陣列
arr01(3)=10 // 修改陣列arr01的下標為3的元素
1.2 變變陣列的使用
import scala.collection.mutable.ArrayBuffer
val arr02 = ArrayBuffer[Any](3, 2, 5) // 定義一個型別為Any的變長陣列
# 可變陣列的增刪改查
arr02(0) // 查詢陣列arr01的第一個元素
arr02.appned(10) // 在陣列尾部進行追加
arr02(0)=5 // 修改陣列的第一個元素值為5
arr02.remove(1) // 刪除陣列下標為1的元素
# 陣列的遍歷
for (i <- arr01) {
println(i)
}
# 變長陣列與定長陣列相互轉換
arr03 = arr01.toBuffer // 將定長陣列轉換為變長陣列
arr04 = arr02.toArray // 將變長陣列轉換為定長陣列
2 元組的使用
2.1 元組的使用
注意: scala中的元組最大隻有22個元素
val tuple1 = (1, 2, 3, "hello", 4) // 定義一個元組tuple
2.2 元組的查詢與遍歷
# 兩種方法
tuple1._1 // 取出元組的第一個元素
tuple1.productElement(0) // 使用productElement(index)方法,取出元組的第一個元素
//遍歷元組, 元組的遍歷需要使用到迭代器
for (item <- t1.productIterator) {
println("item=" + item)
}
3 列表的使用
在預設情況下 List 是scala.collection.immutable.List
,即不可變,
如果要使用可變型別的,需使用: scala.collection.mutable.List
3.1 不可變列表的使用
val list01 = Nil //空列表
list02 = List(1, 2, 3, "Hello") # 建立一個列表
val list03= (1 :: 2 :: 2 :: Nil) # 使用符號建立一個列表,使用時注意,尾部需要加上 `::Nil`
3.2 不可變列表的查詢
list02(1) // 獲取list01的第二個元素
3.3 可變列表的使用
import scala.collection.mutable.ListBuffer
val lst0 = ListBuffer[Int](1, 2, 3) // 定義一個型別為Int的可變列表
val lst1 = ListBuffer[Int](4, 5)
3.4 可變列表的增刪改查
lst0(0) // 查詢下標為0的元素
lst(0) = 6 // 修改列表下標為0的元素值為6
lst.remove(2) // 刪除列表下標為1的元素
# 增加元素
lst0.append(2) // 在列表尾部追加一個值
lst0 :+ 2 // 在列表尾部追加一個值,注意 : 要永遠對著列表的方向
2+: lst0 // 在列表頭部追加一個值
lst0 ++= lst1 // 列表lst0 與列表 lst1 進行相加
4 佇列的使用
4.1 佇列的建立
import scala.collection.mutable
val q1 = new mutable.Queue[Int] // 建立佇列
4.2 佇列元素的增加
# 增加元素,使用時注意下面兩種寫法的不同
q1 ++= List(4,5,7) // 預設值直接加在佇列後面 (9,4,5,7)
q1 += List(10,0) // 表示將List(10,0) 作為一個元素加入到佇列中
4.3 佇列元素的進與出
//dequeue 從佇列的頭部取出元素 q1本身會變
val queueElement = q1.dequeue()
println("queueElement=" + queueElement + "q1="+q1)
//enQueue 入佇列,預設是從佇列的尾部加入. Redis
q1.enqueue(100,10,100,888)
println("q1=" + q1)
4.4 獲取佇列元素
//1. 獲取佇列的第一個元素
println(q1.head) // 對q1沒有任何影響
//2. 獲取佇列的最後一個元素
println(q1.last) // 對q1沒有任何影響
//3. 取出隊尾的資料 ,即:返回除了第一個以外剩餘的元素,可以級聯使用
println(q1.tail)
println(q1.tail.tail.tail.tail)
5 map的使用
5.1 map的建立
# 不可變map的建立
val map1 = Map("Alice" -> 10, "Bob" -> 20, "Kotlin" -> "北京")
# 可變map的建立
import scala.collection.mutable
val map1 = new scala.collection.mutable.HashMap[String, Int] // 建立一個空的map
val map2 = mutable.Map("Alice" -> 10, "Bob" -> 20, "Kotlin" -> "北京") // key-value形式建立
val map3 = mutable.Map(("Alice", 10), ("Bob", 20), ("Kotlin", "北京")) // 使用對偶元組形式建立map
5.2 map的新增新元素
map1 += "Alice" -> 10
5.3 map值的獲取的幾種方式
# 方式1 map(key)
map4("Alice") // 當key 不存在時會出現 java.util.NoSuchElementException: key not found 的異常
# 方式2 使用contains方法檢查是否存在key
if (map4.contains("Alice")) {
println("key存在,值=" + map4("Alice"))
} else {
println("key不存在:)")
}
# 方式3-使用map.get(key).get取值
//1. 如果key存在 map.get(key) 就會返回Some(值) ,然後Some(值).get就可以取出
//2. 如果key不存在 map.get(key) 就會返回None
map4.get("Alice").get
# 方式4-使用map4.getOrElse()取值
map4.getOrElse("Alice", "預設的值“) // 如果key存在就返回對應的value,不存在返回預設值
5.4 map值的遍歷的幾種方式
for ((k, v) <- map4) println(k + " is mapped to " + v)
for (v <- map6.keys) println(v)
for (v <- map6.values) println(v)
6 set的使用
6.1 set的建立
# 不可變set的建立
val set = Set(1, 2, 3) //不可變
# 可變set的建立
import scala.collection.mutable
val set2 = mutable.Set(1,2,"hello")
6.2 可變set集合的新增與刪除元素
# 增加,兩種方式
set2.add(4)
set += 4
# 刪除元素,兩種方式
set.remove(4) // 刪除值為4的元素
set -= 4
相關文章
- scala(四)集合
- scala佇列、並行集合基本使用佇列並行
- Scala集合學習總結
- Scala陣列、元組與集合陣列
- Java程式設計基礎17——集合(List集合)Java程式設計
- 2020-11-17 元組 字典 集合
- ubuntu下使用IntelliJ idea開發scalaUbuntuIntelliJIdea
- SpringBoot(17)——使用SpringDataJPASpring Boot
- Scala
- Scala 簡介 [摘自 Scala程式設計 ]程式設計
- Scala學習總結(from scala for the Impatient)
- Scala - DataFrame
- Awesome Scala
- scala(一)
- 大資料技術之_16_Scala學習_07_資料結構(上)-集合大資料資料結構
- scala入門之編寫scala指令碼指令碼
- 好程式設計師大資料學習路線分享Scala系列之集合操作函式程式設計師大資料函式
- Java集合 ArrayList原理及使用Java
- 使用Scala語言實現基本影像識別
- 使用陣列實現環形佇列Scala版本陣列佇列
- Scala特質
- Scala(四):物件物件
- Scala(三):類
- Scala操作Map
- scala 列舉
- 沒有人比我更會使用集合!對, 是dart中的集合Dart
- 2020-2-17-mongodb的使用MongoDB
- Vivado使用技巧(17):建立IBIS模型模型
- 使用Intellij Idea編寫Spark應用程式(Scala+SBT)IntelliJIdeaSpark
- 異常高效使用小竅門 — 讀Scala原始碼有感原始碼
- 在IDEA中使用SBT構建工具建立SCALA專案Idea
- Java集合 LinkedList的原理及使用Java
- Oracle OCP(09):使用集合運算子Oracle
- Flink - 安裝包scala 2.12和scala 2.11的區別
- Unity6 URP17使用初探Unity
- 使用C++17手擼JSON庫C++JSON
- Scala 的學習
- scala怎麼退出