栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

我可以在Java 8中复制Stream吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

我可以在Java 8中复制Stream吗?

通常这是不可能的。

如果要复制输入流或输入迭代器,则有两个选择:

答:将所有内容都保存在集合中,例如
List<>

假设您将一个流复制为两个流,

s1
然后将
s2
。如果您的
n1
元素中包含高级元素,
s1
并且
n2
元素中包含
s2
,则必须将
|n2 -n1|
元素保留在内存中,以便跟上步伐。如果流是无限的,则可能没有所需存储空间的上限。

看一下Python

tee()
,看看需要什么:

此itertool可能需要大量辅助存储(取决于需要存储多少临时数据)。一般来说,如果一个迭代器使用大部分或全部的数据的另一个前开始迭代器,它是更快地使用

list()
代替
tee()

B.尽可能:复制创建元素的生成器的状态

为了使此选项起作用,您可能需要访问流的内部工作方式。换句话说,生成器(创建元素的部分)首先应支持复制。[OP:请参见下个[
好答案 ,作为该问题示例如何完成的示例]

由于您必须复制整个“外部世界”的状态,因此无法根据用户输入进行操作。Java

Stream
不支持复制,因为它被设计为尽可能通用。例如,使用文件,网络,键盘,传感器,随机性等。[OP:另一个示例是按需读取温度传感器的流。如果不保存读数的副本,则无法复制它]

这不仅是Java中的情况;这是一个一般规则。您可以看到

std::istream
,由于这个原因(以及其他原因),在C
++中仅支持移动语义,不支持复制语义(“复制构造函数(已删除)”)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/569786.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号