Stream
- это интерфейс, поэтому всякий раз, когда вы получаете объект Stream
, скрывается множество скрытых деталей реализации.
Например, возьмите следующий код:
List<String> list = new ArrayList<>();
...
int size = list.stream()
.count();
Работает ли он в постоянном или линейном времени? Или это:
Set<String> set = new TreeSet<>();
...
set.stream()
.sorted()
.forEach(System.out::println);
Будет ли это O (n) или O (n log n)?
В целом, как специализированные реализации потоков, возвращаемые стандартными коллекциями?