gpt4 book ai didi

java - 在Java(或一般情况下)中,迭代器应该是可重用的还是设计为一次性使用的?

转载 作者:行者123 更新时间:2023-12-01 20:19:35 25 4
gpt4 key购买 nike

我知道每当执行 foreach 循环时,都会创建、使用一个新的迭代器,然后不再使用。

我的问题是关于为自定义类实现迭代器。按照惯例,应该使用代码创建迭代器

Iterator<E> it = new myClass.iterator();

能够重用 - 也就是说,我的自定义迭代器类是否应该出于某种原因支持多次迭代元素,或者实现 Iterable 类的 API 的用户是否知道在以下情况下创建一个新迭代器:他/她想再次迭代元素吗?

我希望我的问题不是太模糊;我试图尽可能具体,而不违反我正在学习的类(class)的代码共享规则。我最感兴趣的是了解迭代器的常规用法。我还认为,在大多数情况下,用户只需要一个一次性迭代器,但希望更深入地了解可能在哪里使用、需要或需要可重用迭代器。谢谢!

最佳答案

正如其他人指出的那样,无法将迭代器重置到集合的开头,因此它不可重用。

不仅 Java 如此,C# 也如此。

您可能认为您可以创建一个迭代器作为集合类的成员一次,并且每次请求新迭代器时,您都可以重置它并返回它。

这也不起作用,因为集合类的调用者可能会启动嵌套在另一个迭代中的迭代,因此嵌套迭代会干扰外部迭代。

关于java - 在Java(或一般情况下)中,迭代器应该是可重用的还是设计为一次性使用的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45120692/

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