В работе с Java часто возникают ситуации, когда необходимо преобразовать Iterable в Collection. Например, сторонние библиотеки могут возвращать результаты в виде Iterable, а для дальнейшего использования этих данных требуется формат Collection.
Пример кода, где используется Iterable:
Iterable<String> iterable = new ArrayList<String>();
А дальше в коде ожидается применение Collection:
Collection<String> collection;
Для решения этой проблемы не обязательно писать много циклов foreach. Существует несколько простых способов преобразования Iterable в Collection.
Использование Java 8 Stream API
С помощью Stream API можно преобразовать Iterable в Collection всего за пару строк кода.
Iterable<String> iterable = new ArrayList<String>(); Collection<String> collection = StreamSupport.stream(iterable.spliterator(), false) .collect(Collectors.toList());
В этом коде StreamSupport.stream(iterable.spliterator(), false)
создает поток из Iterable. Метод collect(Collectors.toList())
преобразует поток обратно в список, который является подтипом Collection.
Использование Guava
Если в проекте используется библиотека Guava от Google, можно использовать ее методы для преобразования Iterable в Collection.
Iterable<String> iterable = new ArrayList<String>(); Collection<String> collection = Lists.newArrayList(iterable);
В этом коде метод Lists.newArrayList(iterable)
преобразует Iterable в ArrayList.
Надеемся, что эти примеры помогут быстро и без лишнего кода преобразовать Iterable в Collection.
Добавить комментарий