集合框架--ListIterator接口

通过一段代码来学习List集合:

import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
public class ListDemo
{
	public static void main(String[] args)
	{
		List list=new ArrayList();//创建一个List集合对象,用其子类实例化
		
		//在List集合中添加对象
		list.add("abc1");
		list.add("abc2");
		list.add("abc3");

		//迭代器取出List集合中的对象(注:在List中有一个独有的get方法也可以取出对象)
		Iterator it=list.iterator();
		while(it.hasNext()){
			Object obj=it.next();
			if(obj.equals("abc2"))
			{
				list.add("abc9"); //使用集合操作数据
			}
			else
				System.out.println("next:"+obj);
		}
		System.out.println(list);
	}
}
运行结果:

集合框架--ListIterator接口_第1张图片

抛出了ConcurrentModificationException(检测到对象的并发修改,但不允许这种修改时,抛出异常)。抛出异常的原因是迭代器在操作元素的过程中集合也在操作元素,他们同时修改元素导致迭代出了问题。所以在迭代过程中不要使用集合操作元素,容易出现异常。

Iterator接口下有一个子接口ListIterator(列表迭代器),这个子接口提供增删改查等多种方法。为了获取这个子接口,我们可以使用List接口中的listIterator()方法来获取列表迭代器(这个迭代器只有list集合有)。所以可以使用Iterator接口的子接口ListIterator来完成在迭代中对元素进行更多的操作。

修改代码:

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class ListDemo
{
	public static void main(String[] args)
	{
		List list=new ArrayList();//创建一个List集合对象,用其子类实例化
		
		//在List集合中添加对象
		list.add("abc1");
		list.add("abc2");
		list.add("abc3");

		System.out.println("list:"+list);
	
		//获取列表迭代器对象
		ListIterator it=list.listIterator();

		while(it.hasNext()){
			Object obj=it.next();
			if(obj.equals("abc2"))
			{
				it.add("abc9");  //不再使用集合,使用迭代器来操作数据
			}
		}
		System.out.println("list:"+list);
	}
}
运行结果:
集合框架--ListIterator接口_第2张图片


你可能感兴趣的:(集合框架--ListIterator接口)