Содержание курса
1. Основа Stream
4 урока
28
16
0м
0
Открытый
1.1
Stream как конвейер
↗
11
4
0м 2с
0
Закрытый
1.2
Ленивость вычислений и порядок операций
↗
6
4
-
0
Закрытый
1.3
Создание стримов
↗
6
4
-
0
Закрытый
1.4
Одноразовость stream и типичные ошибки
↗
5
4
-
0
2. Преобразования потока данных
7 уроков
33
23
0м
0
Закрытый
2.1
filter
↗
5
4
-
0
Закрытый
2.2
map: преобразование объектов
↗
5
4
-
0
Закрытый
2.3
flatMap: плоский поток
↗
6
4
-
0
Закрытый
2.4
distinct: equals/hashCode, стоимость операции
↗
5
4
-
0
Закрытый
2.5
sorted
↗
4
3
-
0
Закрытый
2.6
limit/skip: пагинация
↗
4
2
-
0
Закрытый
2.7
peek
↗
4
2
-
0
3. Terminal-операции
5 уроков
21
11
0м
0
Закрытый
3.1
forEach и forEachOrdered
↗
4
2
-
0
Закрытый
3.2
count, min/max, findFirst/findAny
↗
4
2
-
0
Закрытый
3.3
anyMatch/allMatch/noneMatch
↗
5
2
-
0
Закрытый
3.4
toArray и преобразование результатов
↗
4
2
-
0
Закрытый
3.5
reduce: identity/accumulator/combiner, частые ошибки
↗
4
3
-
0
4. Collect и Collectors
4 урока
15
12
0м
0
Закрытый
4.1
Базовые коллекторы
↗
4
3
-
0
Закрытый
4.2
toMap: ключ/значение, merge-функция, map supplier
↗
3
3
-
0
Закрытый
4.3
joining: склейка строк
↗
5
3
-
0
Закрытый
4.4
Продвинутые коллекторы
↗
3
3
-
0
5. Примитивные стримы и оптимизация
4 урока
14
10
0м
0
Закрытый
5.1
Boxing/unboxing
↗
4
3
-
0
Закрытый
5.2
IntStream/LongStream/DoubleStream: зачем нужны
↗
3
2
-
0
Закрытый
5.3
mapToInt/mapToLong/mapToDouble
↗
4
2
-
0
Закрытый
5.4
summaryStatistics
↗
3
3
-
0
6. Optional и Stream
2 урока
8
4
0м
0
Закрытый
6.1
orElse/orElseGet/orElseThrow
↗
4
2
-
0
Закрытый
6.2
Optional.stream()
↗
4
2
-
0
7. Сложные кейсы
2 урока
8
4
0м
0
Закрытый
7.1
Композиция операций
↗
5
2
-
0
Закрытый
7.2
Разбиение на методы
↗
3
2
-
0
8. Параллельные стримы
5 уроков
18
10
0м
0
Закрытый
8.1
Что делает parallelStream() и parallel()
↗
3
2
-
0
Закрытый
8.2
Когда параллельность помогает, а когда ухудшает
↗
4
2
-
0
Закрытый
8.3
Потокобезопасность
↗
3
2
-
0
Закрытый
8.4
Порядок элементов
↗
4
2
-
0
Закрытый
8.5
Коллекторы и parallel
↗
4
2
-
0