Java迭代器在没有递增的情况下获得下一个
发布时间:2020-12-15 04:46:17 所属栏目:Java 来源:网络整理
导读:我在 Java中编写以下循环,对于我想要访问链接列表r的当前和下一个元素的每个循环: ListT 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)时,它从头开始,因此
我在
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),因为您在整个链表上使用了迭代器. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |