您的位置:首页 > 其它

列表迭代器ListIterator的用法

2014-06-07 11:31 190 查看
ListIterator的父接口是Iterator,是List接口中特有的迭代器。

ListIterator在Iterator的基础上,又新添了很多方法:

Iterator中的方法:

1、判断是否有下一个元素:hasNext();

2、获取下一个元素: next();

3、删除迭代器指向的元素:remove();

ListIterator新添的方法:

4、判断是否有前一个元素:hasPrevious();

5、获取前一个元素: previous();

6、添加元素: add(e);

7、获取next后续元素的索引: nextIndex();

8、获取previous后续元素的索引:previousIndex();

9、替换指定元素: set(E e);

使用ListIterator的好处:可以并发执行操作,Iterator不能,Iterator如果并发执行操作,迭代器会出现不确定性行为。

如:

package list_set;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Main {
public static void main(String[] args)
{
List list=new ArrayList();
listIteratorDemo(list);
}
public static void listIteratorDemo(List list)
{
list.add("abc1");
list.add("abc2");
list.add("abc3");
list.add("abc4");

// 迭代器
Iterator it=list.iterator();

while(it.hasNext())
{
//System.out.println(it.next());
Object obj=it.next(); // ConcurrentModificationException并发修改异常
if(obj.equals("abc2"))
{
list.add("hello");
}
System.out.println(obj);
}
}
}




使用ListIterator就可以解决这种异常!

代码如下:

package list_set;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

public class Main {
public static void main(String[] args)
{
List list=new ArrayList();
listIteratorDemo2(list);
}

private static void listIteratorDemo2(List list) {
list.add("abc1");
list.add("abc2");
list.add("abc3");
list.add("abc4");

// 获取列表迭代器
ListIterator it=list.listIterator();

while(it.hasNext())
{
Object obj=it.next();
if(obj.equals("abc2"))
{
it.add("hello");
}
System.out.println(obj);
}
System.out.println(list);
}
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: