作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有一个SynchronousProducer接口(interface),支持两种操作:
public interface SynchronousProducer<ITEM> {
/**
* Produces the next item.
*
* @return produced item
*/
ITEM next();
/**
* Tells if there are more items available.
*
* @return true if there is more items, false otherwise
*/
boolean hasNext();
}
消费者询问生产者是否有更多可用的元素,如果没有则进入关闭序列。
现在讨论问题。
目前有一个for-loop循环充当生产者:
for (ITEM item: items) {
consumer.consume(item);
}
任务是将控制代码转换为以下内容:
while (producer.hasNext()) {
consumer.consume(producer.next())
}
consumer.shutdown();
问题。给定项目:如何编写实现SynchronousProducer接口(interface)的生产者并复制上面所示的for循环的逻辑?
最佳答案
如果 items
实现 Iterable
,您可以将其调整为 SynchronousProducer 接口(interface),如下所示:
class IterableProducer<T> implements SynchronousProducer<T> {
private Iterator<T> iterator;
public IterableProducer(Iterable<T> iterable) {
iterator = iterable.iterator();
}
@Override
public T next() {
return iterator.next();
}
@Override
public boolean hasNext() {
return iterator.hasNext();
}
}
关于java - 如何将for循环转换为生产者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60994150/
我是一名优秀的程序员,十分优秀!