Разбить List на List по 10 элементов

205
07 июня 2018, 07:00

Есть лист. С каждым элементом я в отдельном потоке провожу работу. Обьектов много. Хочу раздить лись по группам (10 обьектов в группе), и каждую группу в отдельном потоке обработать.

Как я делаю сейчас:

list.parallelStream().map(key -> Some actions)

Как мне реализовать это?

Answer 1

Можно предварительно разбить список на части

public static <T> List<List<T>> chunkify(List<T> list, int chunkSize){
    List<List<T>> chunks = new ArrayList<>();
    for (int i = 0; i < list.size(); i += chunkSize) {
        List<T> chunk = new ArrayList<>(list.subList(i, Math.min(list.size(), i + chunkSize)));
        chunks.add(chunk);
    }
    return chunks;
}
chunkify(bigList, 10).parallelStream()
                     .map(...)
                     ...
Answer 2

Можно реализовать используя библиотеку Guava :

Lists.partition(yourListName, 10)
        .parallelStream()
        .forEach(...);
READ ALSO
Ошибка в запросе или базе данных

Ошибка в запросе или базе данных

Ошибка происходит в запросе

297
Как считать данные из таблицы TableView.Java

Как считать данные из таблицы TableView.Java

Как считать данные которые только что были отредактированы пользователем из таблицы TableView и сохранитьJava

182
Как настроить maven

Как настроить maven

Пишу web приложение и деплою его на локальный сервер(Tomcat 9)Дело в том, что при любом малейшем изменении кода, даже на jsp странице мне приходится...

183
Как Перебрать строки массива и получить их количество [требует правки]

Как Перебрать строки массива и получить их количество [требует правки]

хотел бы узнать, как мне примерно это написать на Java, я просто новичокКак Перебрать строки массива и получить их количество? То есть добавить...

207