gpt4 book ai didi

Java迭代器获取下一个而不递增

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:38:16 24 4
gpt4 key购买 nike

我正在用 Java 编写以下循环,对于我想访问链表 r 的当前和下一个元素的每个循环:

    List<T> r = new LinkedList();

for (int i=0; i < r.size() - 1; i++) {
T current = r.get(i);
T next = r.get(i+1);
}

这可能是浪费,因为每次我调用 get(i) 时,它都从头开始,所以代码的运行时顺序是 O(n^2)。我如何使用 Iterator 实现相同的效果(这次它将是 O(n))?这是我的第一次尝试:

while(it.hasNext()) {
T current = it;
T next = it.next();
}

最佳答案

维护一个等于上一个循环的当前值的变量previous

T previous = null;
// If it makes sense to skip the first "null, first element" pair...
if (it.hasNext())
{
previous = it.next();
}

while (it.hasNext())
{
T current = it.next();
// Process previous and current here.

// End of loop, after processing. Maintain previous reference.
previous = current;
}

这将是 O(n),因为您在整个链表上使用 Iterator

关于Java迭代器获取下一个而不递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31080272/

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