Java streams API? "Простых ответов" лично у меня не получается - влияние на производительность скорее негативное, перспективы "легко распараллелить вычисления" - очень сомнительные; улучшение читаемости кода - тоже, на мой взгляд, под вопросом.
Тогда в чём проявляются преимущества stream API?
Быстрее писать код, другим легче читать
Добавлю к минусам ещё что сам API ограничен. Приходится под него код временами прям подстраивать, что подтверждается вопросами на SO типа «а как красиво сделать через стримы»
для меня стримы это другой уровень абстракции. Если ты пишешь for (..) {} то ты пишешь "как надо" (дословно для каждого элемента) выполнять алгоритм, а когда ты пишешь .stream() ты говоришь - что выполнять. В этом как я считаю и есть принципиальная разница. Из этого определения следует, что чернз стрим мы уже не заботимся о том, а как именно происходит итерация по элементам и даем птространство для маневра коимплятору, который в будущем веротяно сможет оптимизировать (сделать безопаснее и тд) эту итерацию за нас. Плюс стрима в том, что стрим можно объявить, но не выполнять, а следовательно передавать как атомарный набор операций при необходимости. Вобщем стрим это не вопрос карсоты даже, а просто разделение ответственности между программистом и внутренним предсавляением языка и средствами работы с ним.
Обсуждают сегодня