使用Previous Iterator反转有序列表

时间:2013-10-22 01:56:05

标签: java list iterator listiterator

我想从列表的末尾开始,并使用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);
}

每次我运行我的测试类时,都会从头开始迭代。

2 个答案:

答案 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有它。