1、iterator是有remove方法的,并且在使用iterator的过程中,不能自行调用collection的增删改方法
而可以利用iterator的remove方法来删除。
2、list就是一个表,ArrayList是一个单链表,LinkedList是一个双链表;
3、
|
add(T value) |
add(T value,index) |
get(index) |
remove |
增强for |
ArrayList |
O(1) |
O(N) |
O(1) |
N |
N |
LinkedList |
O(1) |
O(1) |
O(N) |
N |
N |
说明 |
两者都直接从表的末尾插入,所以是线性时间。 |
array在前端添加是一个O(N)操作,需要把整体向后移动 |
link对get的操作是O(N)的时间 |
|
|
4、使用Iterator遍历的过程中,调用iterator的remove方法是非常高效的。
但是这个remove方法,移除的是当前next方法指向的元素位置。所以在使用前,应该掉用过next方法。
5、ListIterator方法:add方法的插入位置,根据next和previous来确定。相当于不会直接在末尾插入了,可以选择性插入。
Iterator和List的一些问题
原文:http://www.cnblogs.com/anzhi/p/7447705.html