Часто, люди, начинающие работать с stream в Java, не до конца понимают как именно они работают и что значат терминальные операции. К примеру, мы хотим создать стрим и вывести первые 100 элементов. Это можно сделать следующими способами: Создаем стрим Stream infiniteStream = Stream.iterate(0, i -> i + 1); infiniteStream.limit(100).forEach(System.out::println); Все отлично, напечатаются числа от 0 до 99. Что будет, если мы удалим limit? Как раз таки мы и получим бесконечный цикл через stream. Это работает, хотя можно подумать, что у нас есть терминальная операция и якобы пока она не сработает стрим не запустится...
Запомню-ка это
Нет
подписчиков
Пишу полезные и не очень примеры из программирования
Пишу полезные и не очень примеры из программирования
3 года назад
• Вы подписаны
3 года назад
• Вы подписаны
Разница между fail-fast и fail-safe Iterator
fail-fast Iterator Итераторы в Java используются для итерации по объектам Collection. Fail-Fast итераторы бросают ConcurrentModificationException исключение, когда кто-то пытается модификация коллекции. Под этим понимаем добавление, удаление или обновление любого элемента из коллекции, когда поток выполняет итерацию по этой коллекции. Iterator в классах ArrayList, HashMap - это примеры fail-fast Iterator. fail-safe Iterator Fail-safe итераторы не генерируют никаких исключений, если коллекцию изменили во время итерации по ней...
Подборки
