gpt4 book ai didi

java - 如何创建从特定位置开始迭代的迭代器方法

转载 作者:行者123 更新时间:2023-11-29 04:57:11 24 4
gpt4 key购买 nike

我正在编写一个名为 public Iterator<E> iterator(int index) 的函数返回从列表中指定位置('index')开始的迭代器。指定的索引从 0 开始。到目前为止,我的代码如下。

public Iterator<E> iterator(int index) {
Iterator<E> it = iterator(index);
while (it.hasNext()) {
E item = it.next();
System.out.println(item);

}
return it;
}

main 中的代码如下所示。

public static void main(String[] args) {

LinkedList<Integer> lst = new LinkedList<Integer>();

lst.add(3);
lst.append(6);
lst.append(5);
lst.append(7);

lst.iterator(1);

lst 是一个链表。当我尝试调用传递 1 的迭代器方法时,我希望它从位置 1 开始遍历链表,然后打印:6 5 7 .

但是,相反,我收到一条错误消息,内容为

Exception in thread "main" java.lang.StackOverflowError
at Midterm.LinkedList.iterator(LinkedList.java:183)

我不知道我做错了什么。我的问题是,谁能告诉我如何修复我的 public Iterator<E> iterator(int index)方法以便从位置 1 开始遍历链表?

最佳答案

你递归地调用你的方法而不停止:

public Iterator<E> iterator(int index) {
Iterator<E> it = iterator(index); // calls this method again

所以它只会无限期地调用iterator(int index) -> iterator(int index) -> iterator(int index) -> ...

这将导致堆栈溢出,因为堆栈的大小是有限的。

关于java - 如何创建从特定位置开始迭代的迭代器方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33336409/

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