首页 / JAVA / java-交错迭代器方法
java-交错迭代器方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-交错迭代器方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1147字,纯文字阅读大概需要2分钟。
内容图文
![java-交错迭代器方法](/upload/InfoBanner/zyjiaocheng/658/e143f266015d4471bee5752c377cff6c.jpg)
假设我们有一个Iterator:
Iterator i;
还有两个Java方法:
static X f(Iterator i)
static Y g(Iterator i)
它们都通过迭代器进行处理并产生结果,例如“和”,“乘积”或其他.
假设给定i的这些调用的结果是:
x == f(i)
y == g(i)
可以说我们还有另一个类:
class Pair<X,Y>
{
public X x;
public Y y;
}
我想写一个方法:
static Pair<X,Y> h(Iterator i)
以便:
h(i) == Pair<X,Y>(x,y);
如何编写h而不修改或重写f或g?问题是我可能无法复制迭代器(例如,它可能是输入流),因此好像我和f和g都必须以“并行”方式使用迭代器.我宁愿不要将迭代器的全部内容放入列表中,并且可能无法实现,就好像我在流传输大型源代码时可能没有足够的内存.我不要求解决方案具有多个线程,并且在可能的情况下希望使用更简单的方法.
解决方法:
仅使用您拥有的迭代器是不可能的.您将需要一个非常复杂的方案,类似于* nix的tee命令,仅适用于Java迭代器:一个对象,该对象包含您的初始迭代器,并根据需要使用它,并且可以被请求生成一个或多个“输出”迭代器.在内部,您可能正在使用队列来存储未使用的元素.
如果您不希望使用多线程,那么很容易从理论上认识到,您绝对必须缓存初始迭代器的全部产物.这是因为这两种迭代器消耗方法都基于“拉”方法,并且将坚持在返回之前消耗整个序列.
Blojure中的BTW项目lamina所做的事情非常相似,只是不与Java迭代器有关,而是有一个称为“通道”的概念.
内容总结
以上是互联网集市为您收集整理的java-交错迭代器方法全部内容,希望文章能够帮你解决java-交错迭代器方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。