ListIterator以前的方法不起作用 包装; 导入java.util.*; 公共类ArrayListDemo{ 公共静态void main(字符串[]args){ ArrayList a=新的ArrayList(); a、 添加(“B”); a、 添加(“C”); a、 添加(“D”); ListIterator i=a.ListIterator(); 而(i.hasPrevious()){ System.out.println(i.previous()); } } }

ListIterator以前的方法不起作用 包装; 导入java.util.*; 公共类ArrayListDemo{ 公共静态void main(字符串[]args){ ArrayList a=新的ArrayList(); a、 添加(“B”); a、 添加(“C”); a、 添加(“D”); ListIterator i=a.ListIterator(); 而(i.hasPrevious()){ System.out.println(i.previous()); } } },java,iterator,listiterator,Java,Iterator,Listiterator,该程序对于hasNext()和next()方法工作正常,但对于hasPrevious()和previous()它会显示如下消息: package wrap; import java.util.*; public class ArrayListDemo { public static void main(String [] args){ ArrayList<String> a=new ArrayList<String>(); a.a

该程序对于hasNext()和next()方法工作正常,但对于hasPrevious()和previous()它会显示如下消息:

package wrap;
import java.util.*;
public class ArrayListDemo {

    public static void main(String [] args){
        ArrayList<String> a=new ArrayList<String>();
        a.add("B");
        a.add("C");
        a.add("D");
        ListIterator<String> i=a.listIterator();
        while(i.hasPrevious()){
            System.out.println(i.previous());
        }
    }

}
ArrayListDemo[Java应用程序]C:\Program Files(x86)\Java\jre7\bin\javaw.exe(2013年10月28日下午3:20:35)

它将从列表的前面开始,因此在该点之前没有任何内容。如果要使用这些方法,请使用
列表迭代器。

.

从文件:

<terminated> ArrayListDemo [Java Application] C:\Program Files (x86)\Java\jre7\bin\javaw.exe (28-Oct-2013 3:20:35 PM)
如果此列表迭代器在遍历时有更多元素,则返回true 列表将以相反的方向显示

由于迭代器位于第一个位置,
hasPrevious()
将返回false,因此不会执行while循环

boolean hasPrevious()

如果您这样做:

 a's elements

    "B"  "C"  "D"
     ^
     |

Iterator is in first position so there is no previous element
        "B"  "C"  "D"
              ^
              |
    Iterator is in second position so the previous element is "B"

您还可以使用方法
listIterator(int-index)
。它允许您将迭代器放置在
索引定义的位置

如果您这样做:

 a's elements

    "B"  "C"  "D"
     ^
     |

Iterator is in first position so there is no previous element
        "B"  "C"  "D"
              ^
              |
    Iterator is in second position so the previous element is "B"
ListIterator i=a.ListIterator();
最初迭代器我将指向0的
索引


您位于
索引0处
,因此没有上一个元素。

您为到达列表的末尾或介于两者之间的任何位置而给出的返回值。索引0处没有上一个元素到元素

乙二醇


由于您为列表获得了默认的
ListIterator
,因此它从第一个元素开始,这就是
hasPrevious()
返回
false
并退出
循环的原因。如果要以相反的顺序遍历列表,请从上一个索引中获取
ListIterator
,并使用
hasPrevious()
previous()
方法向后遍历

System.out.println("Elements in forward directiton");
        while(i.hasNext()){
            System.out.println(i.next());
        }
System.out.println("Elements in backward directiton");
        while(i.hasPrevious()){
            System.out.println(i.previous());
        }
ListIterator i=a.ListIterator(a.size());//从最后一个索引中获取列表迭代器
而(i.hasPrevious()){
System.out.println(i.previous());
}

正如其他人所说,您的指针仍然指向列表中的第一个元素,所以-1是不可能的

大小为n的列表将以1,2…n-1作为索引

n-1不是-1

这就是为什么hasPrevious和previous不适合您的原因

干杯

D
C
B
ListIterator<String> i=a.listIterator();
System.out.println("Elements in forward directiton");
        while(i.hasNext()){
            System.out.println(i.next());
        }
System.out.println("Elements in backward directiton");
        while(i.hasPrevious()){
            System.out.println(i.previous());
        }
ListIterator<String> i = a.listIterator(a.size()); // Get the list iterator from the last index
while (i.hasPrevious()) {
    System.out.println(i.previous());
}