0

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

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

4

2 回答 2

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());
  }
于 2013-10-22T02:10:55.210 回答
0

ListIterator 和所有的迭代器一样,总是从头开始。前一种方法允许较少受限制的运动,但它仍然从头开始。您的总体意图尚不清楚,因此您可能以错误的方式出现,但对您来说最直接的方法是先重新排序列表,然后再进行迭代。

更新没关系,Rajj 有它。

于 2013-10-22T02:05:20.127 回答