将可迭代转换为集合的简单方法
2022-08-31 04:26:55
在我的应用程序中,我使用第三方库(确切地说是MongoDB的Spring Data)。
这个库的方法返回 ,而我的代码的其余部分期望 。Iterable<T>
Collection<T>
是否有任何实用程序方法可以让我快速将一个转换为另一个?我想避免在代码中创建一堆循环来做这么简单的事情。foreach
在我的应用程序中,我使用第三方库(确切地说是MongoDB的Spring Data)。
这个库的方法返回 ,而我的代码的其余部分期望 。Iterable<T>
Collection<T>
是否有任何实用程序方法可以让我快速将一个转换为另一个?我想避免在代码中创建一堆循环来做这么简单的事情。foreach
在 JDK 8+ 中,不使用任何其他库:
Iterator<T> source = ...;
List<T> target = new ArrayList<>();
source.forEachRemaining(target::add);
编辑:上面的一个是.如果您正在处理 ,Iterator
Iterable
iterable.forEach(target::add);
使用番石榴,您可以使用Lists.newArrayList(Iterable)或Sets.newHashSet(Iterable)以及其他类似的方法。这当然会将所有元素复制到内存中。如果这是不可接受的,我认为与这些一起工作的代码应该采取而不是.番石榴也恰好提供了方便的方法,用于做一些你可以做的事情,使用一个(如或),但性能影响更为明显。Iterable
Collection
Collection
Iterable
Iterables.isEmpty(Iterable)
Iterables.contains(Iterable, Object)