🚀 Stream API в Java: 5 мощных трюков, которые ты мог не знать



Stream API – одна из самых крутых фич в Java, но многие используют только map(), filter() и collect(). Давай разберем 5 полезных трюков, которые сделают код элегантнее и эффективнее!

🔹 1. Группировка элементов (Collectors.groupingBy)
Разбиваем список строк на группы по длине:

List<String> words = List.of("apple", "banana", "cat", "dog", "elephant");
Map<Integer, List<String>> grouped = words.stream()
.collect(Collectors.groupingBy(String::length));

System.out.println(grouped);
// {3=[cat, dog], 5=[apple], 6=[banana], 8=[elephant]}


🔹 2. Уникальные элементы (distinct())
Фильтруем дубликаты в потоке:

List<Integer> numbers = List.of(1, 2, 2, 3, 4, 4, 5);
List<Integer> unique = numbers.stream()
.distinct()
.collect(Collectors.toList());

System.out.println(unique); // [1, 2, 3, 4, 5]


🔹 3. Пропуск N элементов (skip(n))
Хотим пропустить первые 3 элемента и взять только оставшиеся:

List<String> names = List.of("Alice", "Bob", "Charlie", "David", "Eve");
List<String> skipped = names.stream()
.skip(3)
.collect(Collectors.toList());

System.out.println(skipped); // [David, Eve]


🔹 4. Найти максимальное значение (max())
Допустим, у нас есть список чисел, найдем максимальное:

List<Integer> nums = List.of(10, 20, 30, 5, 15);
Optional<Integer> maxNum = nums.stream().max(Integer::compareTo);

maxNum.ifPresent(System.out::println); // 30


🔹 5. Проверить, содержит ли список нужное значение (anyMatch())
Допустим, нам нужно проверить, есть ли в списке число больше 100:

List<Integer> nums = List.of(10, 50, 200, 30);
boolean hasLargeNumber = nums.stream().anyMatch(n -> n > 100);

System.out.println(hasLargeNumber); // true


🔥 Stream API – это мощный инструмент для работы с коллекциями. Используйте его, и ваш код станет чище, короче и быстрее!

👉 @BookJava
Просмотры: 2 220
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти