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)