Отслеживать результаты при выполнении потока Java?

У меня есть базовый поток, в котором я перебираю объекты в потоке, и я хочу сохранить возвращаемое значение в списке, чтобы я мог использовать его после завершения потока. Каждый раз, когда я вызываю функцию, она возвращает целое число.

Это один из тех сценариев, в которых я должен использовать цикл for, или я все еще могу использовать поток? Каждый раз, когда вызывается doSomeFunctionThatReturnsAnInt, я хочу сохранить возвращаемое значение или продолжить добавление возврата в список.

myCoolCollectionObject
        .getCoolList()
        .stream()
        .forEach(this::doSomeFunctionThatReturnsAnInt);
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
50
1

Ответы 1

Вы можете использовать Stream.map, чтобы сопоставить элементы потока с int (с функцией, которая у вас есть) и собрать их в список с помощью Stream.collect

List<Integer> result = myCoolCollectionObject
                         .getCoolList()
                         .stream()
                         .map(this::doSomeFunctionThatReturnsAnInt)
                         .collect(Collectors.toList());

Или int[] result = … .mapToInt(this::doSomeFunctionThatReturnsAnInt).toArray();

Holger 28.05.2018 14:19

@Holger Конечно. Действительно :)

user7 28.05.2018 15:36

Другие вопросы по теме