使用带有迭代器的 for 循环来设置 LinkedList 中 i Index 处的元素是可接受的解决方案吗?

Is using a for loop with an iterator to set element at i Index in a LinkedList an acceptable solution?

public void set(int n, Object newElement) {
        if (n < 0) {
            throw new IllegalArgumentException();
        }
        ListIterator it = this.listIterator();
        for (int i = 0; i <= n; i++) {
            it.next();
            if (i == n) {
                it.set(newElement);
            }
        }
    }

-

public void set(Object element) {
            if (!isAfterNext) {
                throw new IllegalStateException();
            }
            position.data = element;
        }
    }

我使用 for 循环在特定索引处设置元素。我想知道这样做是否正确,代码可以工作,但是没有办法通过使用 while(it.hasNext()) 来执行此操作吗?

我已经试过了,但没有用:

int i = 0;
while(it.hasNext()){
     if(i == n){it.set(newElement);}
     i++;
}

为什么 for 循环有效而这个循环无效?

不,迭代器在这种情况下是错误的抽象,你不想"iterate" :)

在这种情况下,您应该使用 List 接口,它允许访问列表中的随机元素(LinkedList 已经是 List)。