tgoop.com/BookJava/3914
Create:
Last Update:
Last Update:
🧠 Stream API vs. for-loop: когда лучше не использовать Stream
Всё чаще вижу, как даже простые циклы заменяют на Stream API "для красоты". Но в ряде случаев это бьёт по производительности и читаемости.
📌 Пример:
// Было
for (User user : users) {
if (user.isActive()) {
return user;
}
}
// Стало
return users.stream()
.filter(User::isActive)
.findFirst()
.orElse(null);
💡 Выглядит элегантно, но…
⚠️ Проблема:
stream() создает итератор, лямбду, объект Optional, плюс возможен autoboxing. А обычный for — просто цикл.📊 Бенчмарк (JMH):
*
for-loop быстрее на ~30-50% на коротких коллекциях (до 1000 элементов).* На больших коллекциях разница сокращается, но
for всё равно стабильнее.📌 Когда лучше использовать
for:* Нужно выйти из цикла при первом совпадении.
* Важна максимальная производительность.
* Код должен быть суперчитаемым и без лишних аллокаций.
📌 Когда можно Stream:
* Фильтрации, маппинги, группировки — когда логика сложнее.
* Обработка больших потоков с
parallelStream() (осторожно!).* Когда читаемость выигрывает из-за декларативности.
✅ Вывод: Stream API — мощный инструмент, но не замена всему подряд. Иногда простой
for — это и быстрее, и понятнее.👉@BookJava
BY Библиотека Java разработчика

Share with your friend now:
tgoop.com/BookJava/3914
