Реализация бинарного поиска с использованием Java8 Streams API - PullRequest
0 голосов
/ 14 декабря 2018

Я хотел бы знать, возможно ли реализовать бинарный поиск с помощью API Java 8 Streams?Бинарный поиск рекурсивно разбивает массив перед поиском.Можем ли мы сделать то же самое, используя Java 8 Streams API?

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Вы можете вызвать BaseStream.spliterator и использовать это для реализации бинарного поиска, как если бы ваш код был частью API потоков, но это было бы крайне неэффективно по действительно очевидным причинам.

0 голосов
/ 14 декабря 2018

Массивы конечные .У массива четко определены начало, середина и конец, и, таким образом, бинарный поиск может хорошо соответствовать этой структуре данных.

Потоки бесконечны .Вы можете передавать информацию по сетевому соединению или из службы потоковой музыки, и хотя может быть четко определенным началом, существует неправильно определенный середина или конец, поскольку поток может быть прерван внезапно или прерван.сделанный неполным или просто продолжающийся вечность.

Кроме того, потоки являются однонаправленными и не могут быть возвращены в.Как только вы проигрываете элемент потока, он теряется , если только вы не кешируете его где-то еще локально (и мы не возвращаемся к конечным структурам данных).

Итак, нет.Вы не можете использовать алгоритм двоичного поиска в потоке, так как не знаете, было ли уже воспроизведено то, что вы ищете, или будет позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...