java使用Java8 Streams API实现二进制搜索 1 年,11 月 Questions & Answers 1371 我想知道是否可以使用Java8 Streams API实现二进制搜索?二进制搜索在搜索之前递归拆分数组。我们可以使用Java8StreamsAPI做同样的事情吗
# 1 楼答案 数组是有限的。数组有一个定义良好的开始、中间和结束,因此,二进制搜索可以很好地适应这种数据结构 溪流是无限的。你可以通过网络连接或流媒体音乐服务传输信息,虽然有一个定义明确的开始,但也有一个定义不明确的中间或结束,因为流可能会突然中断,或者变得不完整,或者永远持续下去 此外,流是单向的,不能递归到。一旦你播放流中的一个元素,它就会丢失,除非你把它缓存在本地的其他地方(我们会回到有限的数据结构) 所以,不可以。你不能在流上使用二进制搜索算法,因为你不知道你搜索的内容是否已经播放过,或者稍后是否会播放
# 1 楼答案
数组是有限的。数组有一个定义良好的开始、中间和结束,因此,二进制搜索可以很好地适应这种数据结构
溪流是无限的。你可以通过网络连接或流媒体音乐服务传输信息,虽然有一个定义明确的开始,但也有一个定义不明确的中间或结束,因为流可能会突然中断,或者变得不完整,或者永远持续下去
此外,流是单向的,不能递归到。一旦你播放流中的一个元素,它就会丢失,除非你把它缓存在本地的其他地方(我们会回到有限的数据结构)
所以,不可以。你不能在流上使用二进制搜索算法,因为你不知道你搜索的内容是否已经播放过,或者稍后是否会播放
# 2 楼答案
您可以调用
BaseStream.spliterator
,并使用它来实现二进制搜索,就像您的代码是streams API的一部分一样,但由于非常明显的原因,这将是非常低效的