首先这个iterator的next()源码,不知为何在try出现了一些冗余,这个i的定义是多余的?但是有可能是为了程序可理解性的考虑
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
public class Ans {
public static void main(String[] args) {
ArrayList<Integer> arr = new ArrayList<>(){{add(1);add(2);add(3);}};
ListIterator<Integer> iter = arr.listIterator(); //细节:ListIterator 有add方法,普通的Iterator没有,因为对于Set来说在某一位置插入元素是没有意义的
iter.add(4);
iter.add(5); //这里的插入应该全部插入到当前位置
System.out.println(arr);
System.out.println(iter.next()); //导致这里next()打印的还是原始列表的第一个节点
iter.remove(); //这里移除的是当前位置的元素,当前位置是1,next是2
System.out.println(arr);
System.out.println(iter.next()); //有一个tips,equals比较两个数大小时,不要使用a-b这种形式,因为可能造成溢出,一定要使用严格的>,==,<
}
}