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)
如何使用迭代器做同样的事情?
使用两个迭代器.我测试了这个,它对我有用.
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因此,迭代器从0和second开始时开始1.那么这仅仅是打印next()两者的问题.无论列表中的元素数量是奇数还是偶数,这都将起作用.
编辑2
我今天的逻辑很弱.感谢@barjak指出有关空列表和不必要的案例first.hasNext().
| 归档时间: |
|
| 查看次数: |
2140 次 |
| 最近记录: |