gpt4 book ai didi

java - 如何将for循环转换为生产者?

转载 作者:行者123 更新时间:2023-12-02 08:47:15 25 4
gpt4 key购买 nike

有一个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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com