println("====不可变数组=====") //不可变数组 val arr1 = Array(1, 2, 3) val arr2 = arr1 :+ "4b" //尾部追加 val arr3 = "我" +: -1 +: 0 +: arr1 //头部追加 println(arr2.mkString(", ")) println(arr3.mkString(", ")) // ====不可变数组===== // 1, 2, 3, 4b // 我, -1, 0, 1, 2, 3 println("====可变数组=====") //可变数组 val arr4 = ArrayBuffer(10) arr4 += 11 += 12 //尾部追加 == arr4.append() 8 +=: 9 +=: arr4 //头部追加 == arr4.prepend() arr4.insert(3, 105) //在索引为3的地方插入 println(arr4) arr4.remove(3) //删除索引为3的元素 arr4.remove(1, 2) //从索引为1处连续删除2个元素 println(arr4) arr4 -= 111 //删除为11的元素,如果存在,则删除,如果不存在则什么也不做 println(arr4) // ==== 可变数组 ===== // ArrayBuffer(8, 9, 10, 105, 11, 12) // ArrayBuffer(8, 11, 12) // ArrayBuffer(8, 11, 12) println("====可变数组与不可变数组之间的转换====") //可变数组与不可变数组之间的转换 val immuarr = arr4.toArray //可变数组转换为不可变数组 val muarr = immuarr.toBuffer //不可变数组转换为可变数组 println(muarr) println(immuarr) // ==== 可变数组与不可变数组之间的转换 ==== // ArrayBuffer(8, 11, 12) // [I@59 a6e353 println("====不可变列表=====") //不可变列表 val list1 = List(1, 2, "wo") val list2 = 0 +: list1 //与不可变数组一样,在列表头部添加 val list3 = list1 :+ 3 //与不可变数组一样,在列表尾部添加 val list4 = list1.::(4) //在列表开头位置添加 val list5 = 10 :: 11 :: 12 :: 13 :: Nil //Nil为空数组,使用::创建新数组 println(list2) println(list3) println(list4) println(list5) // List(0, 1, 2, wo) // List(1, 2, wo, 3) // List(4, 1, 2, wo) // List(10, 11, 12, 13) println("列表合并") //列表合并 println(list1 :: list2) //将list1作为一个元素添加到list2的头部 println(list1 ::: list2) //将list1中的元素拆分,然后放入list2头部 println(list1 ++ list2) // == list1:::list2 // List(List(1, 2, wo), 0, 1, 2, wo) // List(1, 2, wo, 0, 1, 2, wo) // List(1, 2, wo, 0, 1, 2, wo) println("====可变列表===") val list6 = ListBuffer(10, 11, 12) list6.append(13, 14, 15) //尾部添加 list6.prepend(8, 9) //头部添加 list6 += 16 += 17 //尾部添加 == append 6 +=: 7 +=: list6 //头部添加 ==prepend println(list6) // ==== 可变列表 === // ListBuffer(6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17) //合并 println("合并") val list7 = ListBuffer(100, 101) val list8 = list6 ++ list7 // 合并list6和list7的元素并生成新的列表 list6 ++= list7 //将list7中的元素添加到list6中 println(list6) println(list7) println(list8) // 合并 // ListBuffer(6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 100, 101) // ListBuffer(100, 101) // ListBuffer(6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 100, 101) //修改 println("修改") list7(1) = 102 println(list7) // 修改 // ListBuffer(100, 102) //删除 println("删除") list6 -= 100 list6.remove(0, 3) println(list6) // 删除 // ListBuffer(9, 10, 11, 12, 13, 14, 15, 16, 17, 101) //不可变集合 println("====不可变集合===") val set1 = Set(10, 11, 10) //重复数据会自动去除 val set2 = set1 + 12 + 13 //添加元素,因为是无须的,所以不存在首尾添加 val set3 = set2 - 11 //删除元素 val set4 = set1 ++ set3 //合并集合 println(set1) println(set2) println(set3) println(set4) // ====不可变集合=== // Set(10, 11) // Set(10, 11, 12, 13) // Set(10, 12, 13) // Set(10, 11, 12, 13) println("=======可变集合=====") val set5 = mutable.Set(1, 2, 1) set5.add(5) //添加元素 ==set5 += 5 set5 += 6 set5.remove(2) //删除元素 == set5 -= 2 val set6 = mutable.Set(10, 11) set6 ++= set5 //将set5 添加到set6中 println(set6) println(set5) // ======= 可变集合 ===== // HashSet(1, 10, 11, 5, 6) // HashSet(1, 5, 6) //不可变map println("===不可变map====") val map1 = Map("a" -> 10,"b" -> 11) map1.foreach(println) //遍历映射 map1.foreach((kv:(String,Int)) => println(kv)) //与上方结果一样,遍历映射 println(map1.get("a")) //获取的为Some值 println(map1.get("a").get) //获取的为value值,即Some中的值 println(map1.getOrElse("c",0)) //获取不存在的key的value, // === 不可变map ==== // (a, 10) // (b, 11) // (a, 10) // (b, 11) // Some(10) // 10 // 0 //可变map println("===可变map====") val map2 = mutable.Map("aa"->100,"bb"->101) map2 +=(("cc",102)) //添加元素 == put == update map2.put("dd",103) //添加元素,底层为+=实现 println(map2) map2.remove("cc") //删除元素 map2 -= "bb" //删除元素 == map2.remove println(map2) map2++=map1 println(map2) //将map1中的元素合并到map2中 val map3 = map1 ++ map2 //将map1与map2中的元素合并赋值给map3 println(map3) // === 可变map ==== // HashMap(aa -> 100, bb -> 101, cc -> 102, dd -> 103) // HashMap(aa -> 100, dd -> 103) // HashMap(aa -> 100, dd -> 103, a -> 10, b -> 11) // Map(a -> 10, b -> 11, aa -> 100, dd -> 103)