Java 如何检查集合是否包含Scala中其他集合中的任何元素?
标题说明了一切,找出集合是否包含其他集合的任何元素的最佳实践是什么 在java中,我会这样执行它Java 如何检查集合是否包含Scala中其他集合中的任何元素?,java,scala,collections,apache-commons,Java,Scala,Collections,Apache Commons,标题说明了一切,找出集合是否包含其他集合的任何元素的最佳实践是什么 在java中,我会这样执行它 CollectionUtils.containsAny(a, b) 使用公共apache集合UTIL,其中变量a/b是集合 如何在scala中实现这种行为?还是有像图书馆一样的收藏 我不想使用公共apache库,因为我必须将scala集合转换为java集合。Intersect val a = Seq(1,2,3) ; val b = Seq(2,4,5) a.intersect(b) res0:
CollectionUtils.containsAny(a, b)
使用公共apache集合UTIL,其中变量a/b是集合
如何在scala中实现这种行为?还是有像图书馆一样的收藏
我不想使用公共apache库,因为我必须将scala集合转换为java集合。Intersect
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
您可以将
存在(p:T=>Boolean):Boolean
和包含(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()
检查其中一个集合是否为集合
,并进行相应的优化
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库。scala集合和java集合之间有什么区别吗?@RobertMoskal是的-事实上scala有两个完全独立的集合层次结构:不可变和可变。不知道为什么它会被否决。这是一个显而易见的答案,它看起来更干净,因为它是一个非空的。不管怎样,我没有投反对票,只是没有投。因为问题实际上是“这两个数组是否有任何相同的元素”,我仍然感觉到明显答案的交叉点。它当然不需要否决票。很明显,仅仅为了检查交叉口是否为空,就必须创建一个交叉口,这不是很浪费吗?我认为这就是为什么人们投票支持另一种解决方案。这是有道理的。。。但我认为这并不能增加可读性