scala集合操作(2)
来源:互联网 发布:q动态头像软件 编辑:程序博客网 时间:2024/06/05 14:42
**承接集合操作(1),今天给大家继续分享下面内容:**
11.groupBy, grouped
(1)groupBy根据某个元素分组
例如: val data = List(("HomeWay","Male"),("XSDYM","Femail"),("Mr.Wang","Male"))
val group1 = data.groupBy(_._2)
print(group1)
//其输出结果为一个map
Map(Male -> List((HomeWay,Male), (Mr.Wang,Male)), Femail -> List((XSDYM,Femail), (frank,Femail), (andy,Femail)))
(2)grouped根据所给Int型参数,规定每组几个元素
比如 val data = List(("HomeWay","Male"),("XSDYM","Femail"),("Mr.Wang","Male"),("frank","Femail"),("andy","Femail"))
val group2=data.grouped(2).toList
print(group2)
结果为List( List((HomeWay,Male), (XSDYM,Femail)), List((Mr.Wang,Male), (frank,Femail)) , List((andy,Femail)))
12.scan
由初始值开始,从左到右,进行积累的操作 val nums=List(1,2,3,4)
val result=nums.scan(1)(_+_)
print(result)
结果为List(1, 2, 4, 7, 11)
13.take,takeRight,takeWhile
take即提取前几个元素
takeRight即从右边开始提取n个元素
takeWhile从左往右提取知道条件p不成立为止
` val nums = List(1,1,1,1,4,4,4,4)
val left = nums.take(4) // List(1,1,1,1)
val right = nums.takeRight(4) // List(4,4,4,4)
val headNums = nums.takeWhile( _ == nums.head) // List(1,1,1,1)`
14.drop,dropRight,dropWhile
与take相似即丢弃操作
大家来看例子吧 val nums = List(1,1,1,1,4,4,4,4)
val left = nums.drop(4) // List(4,4,4,4)
val right = nums.dropRight(4) // List(1,1,1,1)
val tailNums = nums.dropWhile( _ == nums.head) // List(4,4,4,4)
15.span,splitAt,partition
这几个操作都是针对如何将表一分为二的,
(1)span从左到右应用条件p进行判断,知道条件不成立,此时将列表一分为二
val nums = List(1,1,1,2,3,2,1)
val (prefix,suffix) =nums.span( _ == 1)
print(prefix)
print(suffix)
其结果为
List(1, 1, 1) List(2, 3, 2, 1)
(2)splitAt将列表从第n个一分为二
val (prefix,suffix) = nums.splitAt(3)
// prefix = List(1,1,1), suffix = List(2,3,2,1)
(3)partition根据条件选择元素,将满足条件的放到一方,不满足的放到另一方
val (prefix,suffix) = nums.partition( _ == 1)
prefix = List(1,1,1,1), suffix = List(2,3,2)
16.padTo
将列表扩展到指定长度,其空缺元素用参数补充 val nums = List(1,1,1)
// List(1,1,1,2,2,2)
val padded = nums.padTo(6,2)
17.combinations,permutations
(1)combinations即列表中的n个元素进行组合,再挑选出不重复的列表
val nums = List(1,3,1)
//List(List(1, 1), List(1, 3))
val combinations = nums.combinations(2).toList
print(combinations)
(2)permutations对列表中的元素进行排序,返回不重的排列列表
val permutations = nums.permutations.toList
print(permutations)
//List(List(1, 1, 3), List(1, 3, 1), List(3, 1, 1))
18.zip,zipAll,zipWithIndex,unzip,unzip3
为两个列表的操作,将对应的位置元素组成一个pair,返回列表长度为两个列表中短的那个
val alphabet = List("A",B","C")
//List((A,1), (B,2))
val nums = List(1,2)
val zipped = alphabet zip nums
print(zipped)
(2)zipAll为根据最长的列表匹配,空缺值根据相对应的参数补全 val zippedAll = alphabet.zipAll(nums,"*",-1)// List(("A",1),("B",2),("C",-1))
//List((A,1), (B,2), (C,*))
val zippedAll = alphabet.zipAll(nums,-1,"*")
(3)zipWithIndex为将列表元素与序列拼配组成一个pair val zippedIndex = alphabet.zipWithIndex
//List((A,0), (B,1), (C,2))
println(zippedIndex)
(4)unzip解链如
val (list1,list2) = zipped.unzip
//List(A, B) List(1, 2)
println(list1)
println(list2)
(5)unzip3为处理元组元素为三个的集合
val (l1,l2,l3) = List((1, "one", '1'),(2, "two", '2'),(3, "three", '3')).unzip3
//l1=List(1,2,3),l2=List(“one”,”two”,”three”),l3=List(‘1’,’2’,’3’)
19.slice
提取列表中从from到util(不包含该位置)的元素列表
val nums = List(1,2,3,4,5)
//List(3,4)
val sliced = nums.slice(2,4)
20.sliding
将列表按照固定大小步长进行分组,结果返回一个迭代器
val nums = List(1,1,2,2,3,3,4,4)
//这里默认值为步长为一List(List(1,1),List(1,2),List(2,2),List(2,3),List(3,3),List(3,4),List(4,4))
val groupStep2 = nums.sliding(2,2).toList //List(List(1,1),List(2,2),List(3,3),List(4,4))
val groupStep1 = nums.sliding(2).toList
21.update
将列表中的某个元素进行跟新操作
val nums = List(1,2,3,3)
// List(1,2,3,4)
val fixed = nums.updated(3,4)
- scala集合操作(2)
- scala学习笔记(五)集合操作
- Scala集合操作指南
- Scala集合一些操作
- Scala数据集合操作
- scala集合操作
- Scala集合操作
- Scala 集合数组操作
- scala集合操作
- scala集合数据操作
- scala集合操作
- scala中的集合操作
- Scala集合操作实战
- Scala之旅-集合操作
- Scala集合操作简单说明
- scala基础---集合操作汇总
- Scala集合操作—List
- Scala集合操作—Set
- 使用最少的硬币
- mysql事物
- JDK源码分析之主要阻塞队列实现类PriorityBlockingQueue
- for循环中移除元素的空指针坑
- GCD
- scala集合操作(2)
- spring定时执行频率动态改变(个人备份)
- 格式太旧或是类型库无效
- where、having之间的区别和用法
- javaScript 函数参数的按值传递
- QAQ
- Gnuplot:双折线图、双柱状图模板
- Superset接入CAS单点登录
- 内部类