如何检查 collection 是否包含 Scala 中其他 collection 的任何元素?
How to check if collection contains any element from other collection in Scala?
标题说明了一切,找出 collection 是否包含其他 collection 的任何元素的最佳做法是什么?
在java中我会这样执行
CollectionUtils.containsAny(a, b)
使用常见的 apache collection 实用程序,其中变量 a/b 是 collections。
如何在 Scala 中实现这种行为?或者是否有像上面的 CollectionUtils 这样的库?
我不想使用 common-apache 库,因为我必须将 scala collection 转换为 java collection.
相交
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
您可以使用 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
使用标准 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 公共库。
标题说明了一切,找出 collection 是否包含其他 collection 的任何元素的最佳做法是什么?
在java中我会这样执行
CollectionUtils.containsAny(a, b)
使用常见的 apache collection 实用程序,其中变量 a/b 是 collections。
如何在 Scala 中实现这种行为?或者是否有像上面的 CollectionUtils 这样的库?
我不想使用 common-apache 库,因为我必须将 scala collection 转换为 java collection.
相交
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
您可以使用 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
使用标准 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 公共库。