在这种情况下如何使用迭代器?

Emi*_*mil 0 java iterator arraylist

我必须以这种方式迭代一个arraylist.

ArrayList<Integer> li = new ArrayList<Integer>();
li.add(20);
li.add(30);
li.add(40);
li.add(50);
li.add(70);

for (int i = 0; i < li.size() - 1; i++)
    System.out.println(li.get(i) + " " + li.get(i + 1));
Run Code Online (Sandbox Code Playgroud)

输出:

20 30
30 40
40 50
50 70
Run Code Online (Sandbox Code Playgroud)

如何使用迭代器做同样的事情?

Man*_*dan 6

使用两个迭代器.我测试了这个,它对我有用.

    Iterator<Integer> first = li.listIterator();

    // Will raise IndexOutOfBoundsException if list is empty.
    Iterator<Integer> second = li.listIterator(1);

    while (second.hasNext()) {
        System.out.println(first.next() + " " + second.next());
    }
Run Code Online (Sandbox Code Playgroud)

编辑:不需要内心if.傻我.

说明:该listIterator(index)方法返回一个迭代器,该迭代器从列表中的指定位置开始,其中as listIterator()返回从零位开始的迭代器.

first因此,迭代器从0second开始时开始1.那么这仅仅是打印next()两者的问题.无论列表中的元素数量是奇数还是偶数,这都将起作用.

编辑2

我今天的逻辑很弱.感谢@barjak指出有关空列表和不必要的案例first.hasNext().