scala中集合的交集、并集、差集
2016-01-07 09:20
399 查看
原文网址:http://hongjiang.info/scala-union-diff-intersect/
scala中有一些api设计的很人性化,集合的这几个操作是个代表:
交集:
并集:
差集:
添加或删除元素,可以直接用+,-方法来操作,添加删除多个元素可以用元组来封装:
另外,对于非Set集合,在做交集、并集、差集时必须转换为Set,否则元素不去重没有意义。
而对于非Set类型集合元素去重,也有个很好的方法:distinct,定义在 GenSeqLike 特质中
这个方法的好处是集合在去重后类型不变,比用Set去重更简洁
补充,原用于去重的方法removeDuplicates已不鼓励使用。
scala中有一些api设计的很人性化,集合的这几个操作是个代表:
交集:
[code]scala> Set(1,2,3) & Set(2,4) // &方法等同于interset方法 scala> Set(1,2,3) intersect Set(2,4)
并集:
[code]scala> Set(1,2,3) ++ Set(2,4) scala> Set(1,2,3) | Set(2,4) // |方法等同于union方法 scala> Set(1,2,3) union Set(2,4)
差集:
[code]scala> Set(1,2,3) -- Set(2,4) //得到 Set(1,3) scala> Set(1,2,3) &~ Set(2,4) scala> Set(1,2,3) diff Set(2,4)
添加或删除元素,可以直接用+,-方法来操作,添加删除多个元素可以用元组来封装:
[code]scala> Set(1,2,3) + (2,4) scala> Set(1,2,3) - (2,4)
另外,对于非Set集合,在做交集、并集、差集时必须转换为Set,否则元素不去重没有意义。
而对于非Set类型集合元素去重,也有个很好的方法:distinct,定义在 GenSeqLike 特质中
这个方法的好处是集合在去重后类型不变,比用Set去重更简洁
[code]scala> List(1,2,2,3).distinct scala> List(1,2,2,3).toSet.toList
补充,原用于去重的方法removeDuplicates已不鼓励使用。
相关文章推荐
- [王垠系列]谈程序的“通用性”
- nodejs nodejs的操作
- 心跳原理
- osg三维重建的两种方法剖析:三角面片(osgUtil::DelaunayTriangulator)和四角面片(osg::HeightField) (2)
- angular.element方法汇总
- 深入理解BootStrap -- 列表组(list-group)16
- [王垠系列]谈“测试驱动的开发”
- 固定资产过帐成批增加报错:您必须定义此折旧惯例的比例分配期
- 2016我来了,你呢!
- 慕课网的在线Android教学视频讲解(循序渐进)
- Java数据精度
- [王垠系列]什么是“脚本语言”
- JavaScript总结
- 2016.01.07 论文送老师审阅
- PHP 使用 Redis
- Masonry简单使用
- [王垠系列]论对东西的崇拜
- ios collectionView
- 焦虑产生的真正原因
- Emoji字符检查与替换