Collection API — это основная часть Java с версии 1.2, а Stream API — более свежее дополнение, которое появилось в Java 8. Stream API создали, чтобы дополнить Collection API функциональным стилем программирования.
List, Set и MapCollection API работает с конечным количеством элементов, которые должны поместиться в памяти. Stream API же может обрабатывать потенциально бесконечные потоки данных, обрабатывая элементы по мере необходимости, что делает его подходящим для обработки данных большого объёма.
Ключевое различие в том, как каждый API обрабатывает данные:
Collection API поддерживает множественные итерации по одним и тем же элементам. Ты можешь проходить по Collection несколько раз, используя разные итерации или обработчики.
Stream API следует модели одноразового потребления. Когда Stream потреблён или пройден, его нельзя использовать снова. Если тебе нужно выполнить дополнительные операции, ты должен создать новый Stream из исходной Collection.
Выбирай Collections, когда тебе нужно хранить данные и многократно к ним обращаться. Используй Streams, когда тебе нужно выполнять преобразования в функциональном стиле и вычисления над коллекциями, особенно для больших наборов данных или сложной фильтрации и преобразования.
Stream API использует ленивое вычисление (lazy evaluation), что означает, что промежуточные операции не выполняются до тех пор, пока не будет вызвана терминальная операция, что делает его более эффективным по использованию памяти, чем Collection API для больших наборов данных.
Новый — ещё не проверен сообществом
Вы