我有两套相同类型的A和B套装.
我必须找到A是否包含集合B中的任何元素.
没有迭代集合,最好的方法是什么?该组库有contains(object)
和containsAll(collection)
,但不会containsAny(collection)
.
小智 489
不行Collections.disjoint(A, B)
吗?从文档:
true
如果两个指定的集合没有共同的元素,则返回.
因此,false
如果集合包含任何公共元素,则该方法返回.
gpl*_*gpl 131
从Java 8开始: Stream::anyMatch
CaT*_*t.X 30
实现containsAny for sets的一种好方法是使用Guava Sets.intersection().
containsAny
会返回一个boolean
,所以调用看起来像:
Sets.intersection(set1, set2).isEmpty()
Run Code Online (Sandbox Code Playgroud)
如果集合是不相交的,则返回true,否则返回false.这个时间复杂度可能比retainAll略好,因为您不必进行任何克隆以避免修改原始集.
Ada*_*11p 12
我使用 org.apache.commons.collections.CollectionUtils
CollectionUtils.containsAny(someCollection1, someCollection2)
Run Code Online (Sandbox Code Playgroud)
就这些!如果两个集合中至少有一个元素,则 返回true.
使用简单,功能名称更具启发性.
使用retainAll()
在设置界面.该方法提供了两组中共同的元素的交集.有关更多信息,请参阅API文档.
归档时间: |
|
查看次数: |
92051 次 |
最近记录: |