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.
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
Iterablerather thanCollection. Guava also happens to provide convenient methods for doing things you can do on aCollectionusing anIterable(such asIterables.isEmpty(Iterable)orIterables.contains(Iterable, Object)), but the performance implications are more obvious.