使用Java8 Streams API实现二进制搜索

时间:2018-12-14 16:36:42

标签: java java-8 binary-search

我想知道可以使用Java 8 API进行二进制搜索吗?由于二进制搜索在搜索之前会递归拆分数组。因此,我们可以使用Java 8 Streams API来做到这一点吗?

2 个答案:

答案 0 :(得分:0)

数组是有限的。数组的起始,中间和结尾都有明确的定义,因此二进制搜索可以很好地适应此数据结构。

流是无限。您可以流式传输来自网络连接或流式音乐服务的信息,尽管可能有一个明确定义的开始,但由于流可能会突然中断或中断,因此中间或结尾定义不明确变得残缺不全,或者只是永恒。

此外,流是单向的,无法递归到其中。播放流的元素后,它会丢失,除非您将其缓存在本地其他位置(然后我们又回到有限的数据结构)。

所以,不。您无法在流中使用二进制搜索算法,因为您不知道要搜索的内容是否已经播放或以后是否会播放。

答案 1 :(得分:0)

您可以调用BaseStream.spliterator并使用它来实现二进制搜索,就好像您的代码是流API的一部分一样,但是由于非常明显的原因,它的效率极低。