例如,我需要类似的东西:
Collection<String> collection = /* ... */;
Stream<Object> stream = /* ... */;
boolean containsAll = stream.map(Object::toString).containsAll(collection);
当然,我可以使用Collection
方法和调用collect()
将流的所有元素累积到另一个Collection.containsAll()
中,但是如果流太大并且处理所有元素效率低下怎么办?
如果您使用的是Java 9+,则可以这样做
[Stream
的大小,如果不包含Collection
的所有元素,则必须处理其所有元素。
boolean containsAll = stream.map(Object::toString)
.filter(Collection::contains)
.distinct()
.count() == collection.size();