Это вопрос о дизайне API. Когда в C# были добавлены методы расширения, IEnumerable
получили все методы, позволяющие использовать лямбда-выражения непосредственно во всех коллекциях.
С появлением лямбда-выражений и методов по умолчанию в Java я ожидал, что Collection
будет реализовывать Stream
и предоставлять реализации по умолчанию для всех его методов. Таким образом, нам не нужно будет вызывать stream()
, чтобы использовать предоставляемую им мощность.
По какой причине архитекторы библиотек выбрали менее удобный подход?