Предполагая, что this.repository.findAll(partition)
возвращает Iterable<Record>
, вы можете использовать
public Iterable<Record> findAll(final List<Long> id) {
return ListUtils.partition(id, 10).stream()
.flatMap(partition -> StreamSupport.stream(
this.repository.findAll(partition).spliterator(), false))
.collect(Collectors.toList());
}
Эта сложная конструкция Stream
необходима, только когда findAll
возвращает Iterable
вместо Collection
. Если он вернул Collection
, вы могли бы просто использовать:
public Iterable<Record> findAll(final List<Long> id) {
return ListUtils.partition(id, 10).stream()
.flatMap(partition -> this.repository.findAll(partition).stream())
.collect(Collectors.toList());
}
В связи с этим вы не должны накладывать такое же бремя на вызывающего вашего метода и рассмотреть возможность изменения типа возвращаемого значения с Iterable<Record>
на Collection<Record>
или даже List<Record>
.
Другой вопрос, который необходимо рассмотреть, заключается в том, действительно ли выполнение этой операции в этих небольших фрагментах действительно имеет какую-либо выгоду, когда вы все равно извлекаете все записи.
Так почему бы просто используйте return this.repository.findAll(id);
…