In my application I use 3rd party library (Spring Data for MongoDB to be exact).
Methods of this library return Iterable<T>
, while the rest of my code expects Collection<T>
.
Is there any utility method somewhere that will let me quickly convert one to the other? I would like to avoid creating a bunch of foreach
loops in my code for such a simple thing.
Best Answer
With Guava you can use Lists.newArrayList(Iterable) or Sets.newHashSet(Iterable), among other similar methods. This will of course copy all the elements in to memory. If that isn't acceptable, I think your code that works with these ought to take
Iterable
rather thanCollection
. Guava also happens to provide convenient methods for doing things you can do on aCollection
using anIterable
(such asIterables.isEmpty(Iterable)
orIterables.contains(Iterable, Object)
), but the performance implications are more obvious.