我很惊讶地看到BufferedReader
line()
方法创建了Stream的实例
Spliterator
的每个元素访问成本比迭代器
,甚至顺序地更低。
那么,为什么
缓冲读取器::lines()
会创建一个流
匿名用户
使用迭代器
实现它没有技术上的理由。布莱恩·戈茨的声明仍然有效。为什么我怀疑您会注意到这种特定情况下的性能差异,基于<code>拆分器,与迭代器实现相反,迭代器必须保持状态以记住是否已经调用了<code>hasNext()
所以,实际的原因是相同的,这就是为什么这里有很多开发人员这么做。迭代器很熟悉,因此开发人员很快就开始实现它,知道他们可以包装它(在我之前的回答中,我也这样做了)。在JRE开发的情况下,可能有历史原因,例如,它是在引入<code>拆分器
请注意,还有更糟糕的情况,如< code>String.chars(),它可以实现为一个快速、轻量级、基于数组的分裂器,并具有完美的并行支持。相反,您将得到一个< code>PrimitiveIterator。基于代码的Java实现
值得庆幸的是,String.chars()
将在Java中修复。
但是Stream生成方法中不必要的Iterator
弯路不太可能很快消失。在某些情况下,一旦它们以原来的方式实现,重写方法甚至不值得浪费时间...
本文向大家介绍Java缓冲读取器,包括了Java缓冲读取器的使用技巧和注意事项,需要的朋友参考一下 示例 介绍 该BufferedReader班是以外的包装Reader是有两个主要目的类: ABufferedReader为包装的提供缓冲Reader。这允许应用程序一次读取一个字符,而不会产生过多的I / O开销。 一个BufferedReader用于一次读取文本行提供的功能。 使用Buffered
问题内容: 为了寻求帮助,我目前已编写了HTTP服务器。目前,它可以很好地处理GET请求。但是,在使用POST时,缓冲的读取器似乎挂起。当请求停止时,其余输入流将通过缓冲的读取器读取。我在Google上找到了一些东西。我尝试将CRLF和协议版本从1.1更改为1.0(浏览器会自动将请求发送为1.1),任何想法或帮助将不胜感激。谢谢 问题答案: 这不安全!但是显示了如何在初始HTTP标头之后的输入流中
本文向大家介绍迭代器 Iterator 是什么?相关面试题,主要包含被问及迭代器 Iterator 是什么?时的应答技巧和注意事项,需要的朋友参考一下 terator 接口提供遍历任何 Collection 的接口。我们可以从一个 Collection 中使用迭代器方法来获取迭代器实例。迭代器取代了 Java 集合框架中的 Enumeration,迭代器允许调用者在迭代过程中移除元素。
为了方便的处理集合中的元素,Java中出现了一个对象,该对象提供了一些方法专门处理集合中的元素.例如删除和获取集合中的元素.该对象就叫做迭代器(Iterator)。
我希望能够处理从必须在页面中访问的源读取的java流。作为第一种方法,我实现了一个分页迭代器,它在当前页面用尽条目时简单地请求页面,然后使用< code > stream support . stream(iterator,false)获取迭代器上的流句柄。 因为我发现获取我的页面非常昂贵,所以我想通过并行流的方式访问页面。此时,我发现由于java直接从迭代器提供的spliterator实现,我的
这可能是一个基本问题,但是有人能解释一下和之间的主要区别并给出一些例子吗?