标题说明了一切,找出集合是否包含其他集合的任何元素的最佳实践是什么?
在java中,我会像这样执行它。
CollectionUtils.containsAny(a, b)使用常见的apache集合实用程序,其中变量a/b是集合。
如何在scala中实现此行为?还是有像上面提到的CollectionUtils这样的库?
我不想使用common-apache库,因为我必须将scala集合转换为java集合。
发布于 2016-06-18 03:06:57
您可以组合使用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发布于 2016-06-18 03:05:12
与相交
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发布于 2019-08-21 03:57:21
从标准的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库。
https://stackoverflow.com/questions/37888614
复制相似问题