我想知道可以使用Java 8 API进行二进制搜索吗?由于二进制搜索在搜索之前会递归拆分数组。因此,我们可以使用Java 8 Streams API来做到这一点吗?
答案 0 :(得分:0)
数组是有限的。数组的起始,中间和结尾都有明确的定义,因此二进制搜索可以很好地适应此数据结构。
流是无限。您可以流式传输来自网络连接或流式音乐服务的信息,尽管可能有一个明确定义的开始,但由于流可能会突然中断或中断,因此中间或结尾定义不明确变得残缺不全,或者只是永恒。
此外,流是单向的,无法递归到其中。播放流的元素后,它会丢失,除非您将其缓存在本地其他位置(然后我们又回到有限的数据结构)。
所以,不。您无法在流中使用二进制搜索算法,因为您不知道要搜索的内容是否已经播放或以后是否会播放。
答案 1 :(得分:0)
您可以调用BaseStream.spliterator
并使用它来实现二进制搜索,就好像您的代码是流API的一部分一样,但是由于非常明显的原因,它的效率极低。