我想从列表的末尾开始,并使用ListIterators前一个方法
进行迭代public void add(E obj) {
ListIterator <E> iter = theList.listIterator();
while (iter.hasNext()) {
if (obj.compareTo(iter.next()) < 0) {
iter.previous();
iter.add(obj);
return;
}
}
iter.add(obj);
}
每次我运行我的测试类时,都会从头开始迭代。
答案 0 :(得分:1)
以相反顺序获取迭代器使用方法list.listIterator(int index) 此方法将从指定位置返回迭代器, 你应该把列表的大小意味着最后一个元素索引。 之后,您可以使用hasPrevious()和previous()方法。 这将有效,
// declare arraylist
ArrayList<...> a = new ArrayList<...>();
// Add elements to list.
// Generate an iterator. Start just after the last element.
ListIterator li = a.listIterator(a.size());
// Iterate in reverse.
while(li.hasPrevious()) {
System.out.println(li.previous());
}
答案 1 :(得分:0)
与所有迭代器一样,ListIterator始终从头开始。之前的方法允许较少约束的移动,但它仍然从头开始。你的整体意图还不清楚,所以你可能会以错误的方式来解决这个问题,但最直接的方法是先重新排序列表然后进行迭代。
更新没关系,Rajj有它。