scala集合常用函数

1、创建集合

map:Map(a -> 1, b -> 2)
map1:Map(a -> 1, b -> 2, c -> 3)
list:List(1, 2, 3, 4)
list1:List(5, 2, 3, 6, 7)
set:Set(1, 3, 5, 6)
set1:Set(5, 9, 3, 8, 4)
arr:a,b,c
arr1:d,b,c,e

object Main extends App {
    val map = Map("a" -> 1,"b" -> 2)
    val map1 = Map("a" -> 1,"b" -> 2,"c" -> 3)
    val list = List(1,2,3,4)
    val list1 = List(5,2,3,6,7)
    val set = Set(1,3,5,6)
    val set1 = Set(8,3,5,4,9)
    val arr = Array("a","b","c")
    val arr1 = Array("d","b","c","e")
    //获取集合
    println("map:" + map)
    println("map1:" + map1)
    println("list:" + list)
    println("list1:" + list1)
    println("set:" + set)
    println("set1:" + set1)
    println("arr:" + arr.mkString(","))
    println("arr1:" + arr1.mkString(","))
}
2、函数实操
  • 获取集合长度/大小:Set与Map用size;List用length;Array都可以用
object Main extends App {
    val map = Map("a" -> 1,"b" -> 2)
    val map1 = Map("a" -> 1,"b" -> 2,"c" -> 3)
    val list = List(1,2,3,4)
    val list1 = List(5,2,3,6,7)
    val set = Set(1,3,5,6)
    val set1 = Set(8,3,5,4,9)
    val arr = Array("a","b","c")
    val arr1 = Array("d","b","c","e")
    //Map、Set、Array的大小用size
    println("map的size:" + map.size)
    println("set的size:" + set.size)
    println("arr的size:" + arr.size)
    
    //Array、List长度用length
    println("list长度:" + list.length)
    println("arr长度:" + arr.length)
}
map的size:2
set的size:4
arr的size:3
list长度:4
arr长度:3
  • 遍历元素:foreach(println)、迭代器iterator,或者一般for循环,所有集合均适用
object Main extends App {
    //遍历元素foreach(println)
    println("map遍历:") 
    map.foreach(println)
    println("list遍历:") 
    list.foreach(println)
    println("set遍历:") 
    set.foreach(println)
    println("arr遍历:") 
    arr.foreach(println)
	println("============")
    //迭代器iterator
    println("map迭代")
    for (i <- map.iterator) println(i)
    println("list迭代")
    for (i <- list.iterator) println(i)
    println("set迭代")
    for (i <- set.iterator) println(i)
    println("arr迭代")
    for (i <- arr.iterator) println(i)
}
map遍历:
(a,1)
(b,2)
list遍历:
1
2
3
4
set遍历:
1
3
5
6
arr遍历:
a
b
c
============
map迭代
(a,1)
(b,2)
list迭代
1
2
3
4
set迭代
1
3
5
6
arr迭代
a
b
c
  • 包含与否:contains(),所有集合均适用
object Main extends App {
    //包含与否
    println("map是否包含a:" + map.contains("a"))
    println("list是否包含1:" + list.contains(1))
    println("set是否包含1:" + set.contains(1))
    println("arr是否包含d:" + arr.contains("d"))
}
map是否包含a:true
list是否包含1true
set是否包含1true
arr是否包含d:false
  • 转换成字符串:mkString(“连接符”)
  • 获取集合头部,即第一个元素:head,所有集合均适用
object Main extends App {
    //获取集合头部,即第一个元素
    println("map头:" + map.head)
    println("list头:" + list.head)
    println("set头:" + set.head)
    println("arr头:" + arr.head)
}
map头:(a,1)
list头:1
set头:1
arr头:a
  • 获取集合尾部,即除了头部外剩下的集合:tail,所有集合均适用
object Main extends App {
    println("map尾:" + map.tail)
    println("list尾:" + list.tail)
    println("set尾:" + set.tail)
    println("arr尾:" + arr.tail.mkString(",")) //Array数组访问的是引用地址,所以为直观显示,转换成字符串输出
}
map尾:Map(b -> 2)
list尾:List(2, 3, 4)
set尾:Set(3, 5, 6)
arr尾:b,c
  • 获取集合最后一个元素:last,所有集合均适用
object Main extends App {
    println("map最后一个元素:" + map.last)
    println("list最后一个元素:" + list.last)
    println("set最后一个元素:" + set.last)
    println("arr最后一个元素:" + arr.last)
}
map最后一个元素:(b,2)
list最后一个元素:4
set最后一个元素:6
arr最后一个元素:c
  • 获取集合初始数据,即除了最后一个元素外剩下的集合:init,所有集合均适用
object Main extends App {
    println("map初始元素:" + map.init)
    println("list初始元素:" + list.init)
    println("set初始元素:" + set.init)
    println("arr初始元素:" + arr.init.mkString(","))
}
map初始元素:Map(a -> 1)
list初始元素:List(1, 2, 3)
set初始元素:Set(1, 3, 5)
arr初始元素:a,b
  • 获取集合前(后)n个元素:take(n)、takeRight(n),所有集合均适用
object Main extends App {
    println("map前2个元素:" + map.take(2))
    println("list前2个元素:" + list.take(2))
    println("set后2个元素:" + set.takeRight(2))
    println("arr后2个元素:" + arr.takeRight(2).mkString(","))
}
map前2个元素:Map(a -> 1, b -> 2)
list前2个元素:List(1, 2)
set后2个元素:Set(5, 6)
arr后2个元素:b,c
  • 去掉集合前(后)n个元素:drop(n)、dropRight(n),所有集合均适用
object Main extends App {
    println("map去掉前1个元素:" + map.drop(1))
    println("list去掉前2个元素:" + list.drop(2))
    println("set去掉后2个元素:" + set.dropRight(2))
    println("arr去掉后2个元素:" + arr.dropRight(2).mkString(","))
}
PC端 手机端 平板端
map去掉前1个元素:Map(b -> 2)
list去掉前2个元素:List(3, 4)
set去掉后2个元素:Set(1, 3)
arr去掉后2个元素:a
  • 集合反转,Map和Set不能反转:reverse
object Main extends App {
    println("list反转:" + list.reverse)
    println("arr反转:" + arr.reverse.mkString(","))
}
list反转:List(4, 3, 2, 1)
arr反转:c,b,a
  • 集合并集:Set、List、Array用union/++,Map用++,且Set取并集时会去重
object Main extends App {
    //并集
    val arr_union = arr.union(arr1)
    val list_union = list.union(list1)
    val set_union = set.union(set1)
    val map_union = map ++ map1
    println("arr_union_arr1:" + arr_union.mkString(","))
    println("list_union_list1:" + list_union)
    println("set_union_set1:" + set_union) //合并后去重
    println("map_union_map1:" + map_union)
}
arr_union_arr1:a,b,c,d,b,c,e
list_union_list1:List(1, 2, 3, 4, 5, 2, 3, 6, 7)
set_union_set1:Set(5, 1, 6, 9, 3, 8, 4)
map_union_map1:Map(a -> 1, b -> 2, c -> 3)
  • 集合交集:intersection,Map不可用
object Main extends App {
    //交集
	val arr_intersection = arr.intersect(arr1)
    val list_intersection = list.intersect(list1)
    val set_intersection = set.intersect(set1)
    println("arr_intersection_arr1:" + arr_intersection.mkString(","))
    println("list_intersection_list1:" + list_intersection)
    println("set_intersection_set1:" + set_intersection)
}
arr_intersection_arr1:b,c
list_intersection_list1:List(2, 3)
set_intersection_set1:Set(3, 5)
  • 集合差集:diff,Map不可用
object Main extends App {
    //差集
    val arr_diff = arr.diff(arr1)
    val list_diff = list.diff(list1)
    val set_diff = set.diff(set1)
    println("arr_diff_arr1:" + arr_diff.mkString(","))
    println("list_diff_list1:" + list_diff)
    println("set_diff_set1:" + set_diff)
}
arr_diff_arr1:a
list_diff_list1:List(1, 4)
set_diff_set1:Set(1, 6)
  • 拉链:zip,即一个集合与另一个集合一一对应形成二维元组,拉链两边的集合可以是不同的类型,所有集合均适用
object Main extends App {
    //拉链
    println("arr_zip_arr1:" + arr.zip(arr1).mkString(","))
    println("arr_zip_list1:" + arr.zip(list1).mkString(","))
    println("list_zip_list1:" + list.zip(list1))
    println("list_zip_map1:" + list.zip(map1))
    println("set_zip_set1:" + set.zip(set1))
    println("set_zip_set1:" + map.zip(map1).zip(map1))
}
arr_zip_arr1:(a,d),(b,b),(c,c)
arr_zip_list1:(a,5),(b,2),(c,3)
list_zip_list1:List((1,5), (2,2), (3,3), (4,6))
list_zip_map1:List((1,(a,1)), (2,(b,2)), (3,(c,3)))
set_zip_set1:Set((1,5), (3,9), (5,3), (6,8))
set_zip_set1:Map(((a,1),(a,1)) -> (a,1), ((b,2),(b,2)) -> (b,2))
  • 滑窗:sliding(i,j),i代表每个循环窗口的元素个数,j代表每个窗口间隔的元素个数,所有集合均适用
object Main extends App {
    for (i <- arr.sliding(2)) println("arr1_sliding:" + i.mkString) //每2个元素循环输出
    for (i <- list1.sliding(2,2)) println("list1_sliding:" + i) //每2个元素循环输出,且每次循环间隔2个元素
    for (i <- set1.sliding(2,3)) println("set1_sliding:" + i) //每2个元素循环输出,且每次循环间隔3个元素
    for (i <- map1.sliding(1,2)) println("map1_sliding:" + i) //每1个元素循环输出,且每次循环间隔2个元素
}
rr1_sliding:ab
arr1_sliding:bc
list1_sliding:List(5, 2)
list1_sliding:List(3, 6)
list1_sliding:List(7)
set1_sliding:Set(5, 9)
set1_sliding:Set(8, 4)
map1_sliding:Map(a -> 1)
map1_sliding:Map(c -> 3)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值