BOOKJAVA Telegram 3914
🧠 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
👍7💩71



tgoop.com/BookJava/3914
Create:
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

View MORE
Open in Telegram


Telegram News

Date: |

Hashtags Choose quality over quantity. Remember that one high-quality post is better than five short publications of questionable value. Click “Save” ; The main design elements of your Telegram channel include a name, bio (brief description), and avatar. Your bio should be: Matt Hussey, editorial director at NEAR Protocol also responded to this news with “#meIRL”. Just as you search “Bear Market Screaming” in Telegram, you will see a Pepe frog yelling as the group’s featured image.
from us


Telegram Библиотека Java разработчика
FROM American