scala中集合的交集、并集、差集

scala中有一些api设计的很人性化,集合的这几个操作是个代表:

交集:

scala> Set(1,2,3) & Set(2,4)   // &方法等同于interset方法
scala> Set(1,2,3) intersect Set(2,4)

并集:

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)

差集:

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)

添加或删除元素,可以直接用+,-方法来操作,添加删除多个元素可以用元组来封装:

scala> Set(1,2,3) + (2,4)
scala> Set(1,2,3) - (2,4)

另外,对于非Set集合,在做交集、并集、差集时必须转换为Set,否则元素不去重没有意义。
而对于非Set类型集合元素去重,也有个很好的方法:distinct,定义在 GenSeqLike 特质中

这个方法的好处是集合在去重后类型不变,比用Set去重更简洁

scala> List(1,2,2,3).distinct
scala> List(1,2,2,3).toSet.toList 

补充,原用于去重的方法removeDuplicates已不鼓励使用。

文章转载自:http://hongjiang.info/scala-union-diff-intersect/

时间: 2024-08-30 17:46:36

scala中集合的交集、并集、差集的相关文章

LINQ操作数组代码(交集,并集,差集,最值,平均,去重复)_实用技巧

下面以数组为例,展示一些常用LINQ操作. 复制代码 代码如下: static void Main(string[] args) { int[] a = { 1, 2, 3, 4, 5, 6, 7 }; int[] b = { 4, 5, 6, 7, 8, 9, 10 }; int[] c = { 1, 2, 3, 3, 4, 1, 2, 4, 6, 1, 6, 5 }; // 交集 var fuck = a.Intersect(b); // 并集 var shit = a.Union(b);

php中数组的并集、交集和差集函数介绍

php中的数组函数真的是非常之多,实际工作中多了解一些php自身存在的一些函数,将会大大提高工作的速度.这篇文章分享一下在php中如何处理两个或多个数组的并集,交集和差集的函数. (1)php计算两个或多个数组的并集 并集即将两个或多个数组合为一个数组的结果集合.php中合并数组一般都会用到 array_merge 与 + 这两种操作.至于这两者的区别,可参照本站文章: PHP合并数组+与array_merge的区别 (1)php计算两个或多个数组的交集 交集即是两个或多个数组中都存在的那一部分

PHP获得数组交集与差集的方法_php技巧

本文实例讲述了PHP获得数组交集与差集的方法.分享给大家供大家参考.具体分析如下: 一.数组的交集 array_intersect() array_intersect()函数返回一个保留了键的数组,这个数组只由第一个数组中出现的且在其他每个输入数组中都出现的值组成.其形式如下: array array_intersect(array array1,array array2[,arrayN-]) 下面这个例子将返回在$fruit1数组中出现的且在$fruit2和$fruit3中也出现的所有的水果:

【Sets】使用Google Guava工程中Sets工具包,实现集合的并集/交集/补集/差集

获取两个txt文档的内容~存储进集合中求集合的并集/交集/补集/差集 1 package com.sxd.readLines.aboutDB; 2 3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.File; 6 import java.io.FileReader; 7 import java.io.FileWriter; 8 import java.io.IOException;

输入集合A、B和全集C,求两集合的交集、并集、补集、差集

//输入集合A.B和全集C,求两集合的交集.并集.补集.差集 /* 并集:以属于A或属于B的元素为元素的集合成为A与B的并(集) 交集: 以属于A且属于B的元素为元素的集合成为A与B的交(集) 差:以属于A而不属于B的元素为元素的集合成为A与B的差(集) 补集:A的补集C-B */ /* 例如:A={1,2,3} B={2,3,4} C={1,2,3,4,5} AB并集为={1,2,3,4} 交集为={2,3} A补集={4,5} AB差集为={1} */ #include <iostream>

C++Builder中集合的处理

首先看一看窗口的MouseDown事件的声明 void __fastcall TForm1::FormMouseDown(TObject *Sender,TMouseButton Button,TShiftState Shift,int X,int Y) 其中的Shift参数被说明为TShiftState类型: enum Classes_1{ssShift,ssAlt,ssCtrl,ssRight,ssMiddle,ssDouble}; typedef SetTShiftSTate; TShif

Scala中的类

阅读<Programming in Scala>,整理Scala类.继承.重载相关的一些知识点. 类 Scala使用class来定义类. class Counter { private var value = 0 // 必须初始化字段 def increment() { value += 1 } // 方法默认公有 def current() = value //空括号方法 } Scala中的类不能声明为public,一个Scala源文件中可以有多个类. 类的初始化和调用: val myCou

在scala中,类和它的伴生对象可以相互访问对方的私有对象

在scala中,类和它的伴生对象可以相互访问对方的私有对象 class Person {   private var _age = 2   def age_=(num: Int) = this._age = num   def age = _age   def printObj { println(s"I can see ${Person.obj}") } } object Person {   // access the private class field 'age'   def

p#-java中集合的问题请教大神

问题描述 java中集合的问题请教大神 在Collection集合中Collection col = new ArrayList(); 和ArrayList arr = new ArrayList(); 这两个有什么区别吗! 解决方案 没有什么区别,ArrayList是Collection的实现类. 解决方案二: 举个例子吧,collection是爹,arrayList是儿子,儿子的功能肯定大于等于爹的,但是你用父类变量去引用子类对象,那么在调用方法时,如果想调用儿子的特有功能,就不行了.这是动