@Tidus

Разница в стримах коллекций и массива?

Объясните, почему у массивов стрим реализован через класс аррейс, а у коллекций как собственный метод?
И почему отличаются методы стрима? У коллекций нет например таких термальных методов как сум, макс, мин (можно по-другому их получить конечно, но всё равно). В общем почему по-разному реализовано?
  • Вопрос задан
  • 178 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Akela_wolf
Extreme Programmer
Потому что в Java массивы и коллекции - это совершенно разные вещи (хоть и похожие по своему назначению). Массив, находится максимально близко к сишному массиву (разве что на джаве встроена проверка выхода за пределы, а в остальном - практически также). Соответственно, массив не может иметь своих методов, т.к. не является объектом (аналогично примитивным типам данных, по сути массив - это примитивный тип данных в Java). Коллекция же, наоборот, суть объект. Что и обуславливает разницу между ними. Эту разницу можно было бы сгладить на уровне языка, но во времена разработки Java не было понимания как удобнее сделать. А затем - бремя обратной совместимости пришлось нести через годы (аналогичная история приключилась с type erasure). Причем это настолько фундаментальная разница, существующая на уровне JVM, поэтому даже современные языки, например Kotlin, не в состоянии уйти от этой нее (так в Kotlin, класс Array не реализует интерфейс Iterable именно по этой причине).
Ответ написан
Комментировать
BorLaze
@BorLaze
Java developer
А чем отличаются коллекции о массивов, можешь сказать?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы