我有两套同类型的A和B。
我必须找出A是否包含集合B中的任何元素。
不遍历集合的最好方法是什么? Set库有contains(object)和containsAll(collection),但没有containsAny(collection)。
我有两套同类型的A和B。
我必须找出A是否包含集合B中的任何元素。
不遍历集合的最好方法是什么? Set库有contains(object)和containsAll(collection),但没有containsAny(collection)。
当前回答
不收藏。(A, B)工作脱节?从文档中可以看到:
如果两个指定的集合没有共同的元素,则返回true。
因此,如果集合包含任何公共元素,则该方法返回false。
其他回答
您可以使用retainAll方法获取两个集合的交集。
流:anyMatch
从Java 8开始,你可以使用Stream::anyMatch。
setA.stream().anyMatch(setB::contains)
Apache Commons有一个CollectionUtils.containsAny()方法。
在Set接口中使用retainAll()。此方法提供了两个集合中公共元素的交集。有关更多信息,请参阅API文档。
我使用org.apache.commons.collections.CollectionUtils
CollectionUtils.containsAny(someCollection1, someCollection2)
就是这样! 如果两个集合中至少有一个元素,则返回true。
使用简单,函数名更具启发性。