在java中我会像这样执行它


 CollectionUtils.containsAny(a,b)



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


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


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

答案 0 :(得分:19)
您可以结合使用exists(p: T => Boolean):Boolean
和contains(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库。