如何检查集合是否包含Scala中其他集合中的任何元素?

时间:2016-06-17 18:59:12

标签: java scala collections apache-commons

标题说明了一切,找出集合是否包含其他集合的任何元素的最佳实践是什么?





在java中我会像这样执行它




  CollectionUtils.containsAny(a,b)
  




使用常见的apache collection utils,其中变量a / b是集合。





如何在scala中实现此行为?或者是否有像上面的CollectionUtils这样的库?





我不想使用common-apache库,因为我必须将scala集合转换为java集合。




3 个答案:

答案 0 :(得分:19)

您可以结合使用exists(p: T => Boolean):Booleancontains(elem: A1):Boolean

val a = List(1,2,3,4,5,6,7)
val b = List(11,22,33,44,55,6)

a.exists(b.contains) // true

答案 1 :(得分:11)

<强>相交

val a = Seq(1,2,3) ; val b = Seq(2,4,5)
a.intersect(b)
res0: Seq[Int] = List(2)

// to include the test:
a.intersect(b).nonEmpty  // credit @Lukasz

答案 2 :(得分:0)

使用标准Java Collections实用程序中的disjoint()可以确定两个集合是否包含任何公共成员。如果这些集合不是不相交的,则它们至少包含一个公共元素。

在内部,Collections.disjoint()检查任何一个集合是否为Set并进行相应的优化。

import collection.JavaConverters._

val a = List(1,2,3,4,5,6,7)
val b = List(11,22,33,44,55,6)

!java.util.Collections.disjoint(a.asJava, b.asJava)  // true

尽管这仍将Scala集合转换为Java集合。从好的方面来说,不需要额外的apache commons库。