Как мы можем использовать подход Java Streams для сбора объектов, сгенерированных в цикле for
?Использовать потоки Java для сбора объектов, сгенерированных в цикле `for`
Например, здесь мы генерируем один объект LocalDate
на каждый день в месяце, представленный YearMonth
, повторно назову YearMonth::atDay
.
YearMonth ym = YearMonth.of(2017 , Month.AUGUST) ;
List<LocalDate> dates = new ArrayList<>(ym.lengthOfMonth());
for (int i = 1 ; i <= ym.lengthOfMonth() ; i ++) {
LocalDate localDate = ym.atDay (i);
dates.add(localDate);
}
Можно ли это переписать с использованием потоков?
Что контролирует инстанциации 'list'? Каким будет конкретный объект за «Листом»? В [Answer by Górkiewicz] (http://stackoverflow.com/a/42285720/642706) я вижу, что мы явно определяем 'ArrayList'. Как эта задача выполняется здесь? Я вижу, что документ для 'toList' говорит:« Никаких гарантий по типу, изменчивости, сериализуемости или потокобезопасности возвращаемого списка ». Означает ли это, что базовый конкретный класс не является моим бизнесом или проблемой? Это было бы понятно и приемлемо; Мне просто интересно. –
Вам нужен «Список», и вы получите именно это. Если вы хотите явно определить, какая реализация List должна использоваться, вы можете также: 'Collectors.toCollection (ArrayList :: new)' –
'Collectors.toCollection (ArrayList :: new)' хорошо, но добавляет многословие. –