DC
Допустим есть простая задача:
Дан массив чисел, в нем все числа повторяются кроме одного. Найдите это число
Я могу решить его обычным циклом
for
, используя подсчет через мапу, сложность будет очевидно O(N)
Или же я могу решить это стримом через мапу, например:
Arrays.stream(arr)
.boxed()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
.entrySet().stream()
.filter(entry -> entry.getValue() == 1)
.mapToInt(Map.Entry::getKey)
.findFirst()
.getAsInt();
Но тут встает проблема во внутренней реализации библиотек, например Collectors, и то, что стримы по сути своей ленивы.
Всегда ли
O
сложность стрима будет равна линейному аналогу?