链表的测试

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

public class LinkedListTest 
{
	public static void main(String[] args)
	{
		List a=new LinkedList<>();
		a.add("Amy");
		a.add("Carl");
		a.add("Erica");
		List b=new LinkedList<>();
		b.add("Bob");
		b.add("Doug");
		b.add("Frances");
		b.add("Gloria");
		
		ListIterator after=a.listIterator();
		Iterator before=b.iterator();
		
		while(before.hasNext())
		{
			if(after.hasNext())
			{
				after.next();
			}
			after.add(before.next());
		}
	
		System.out.println(a);
		before=b.iterator();
		while(before.hasNext())
		{
			before.next();
			if(before.hasNext())
			{
				before.next();
				before.remove();
			}
		}
		System.out.println(b);
		a.removeAll(b);
		System.out.println(a);
	}
}


 
  
迭代器中的next和remove方法的调用具有互相依赖性,如果在调用remove之前没有next方法是不合法的,这样做将会抛出一个IllegalStateException异常。
而在链表中在调用remove之前使用previous会删除右边的元素
Iterator与ListIterator区别如下:
1、Iterator是ListIterator的父接口。
2、Iterator是单列集合(Collection)公共取出容器中元素的方式。
对于List,Set都通用。
而ListIterator是List集合的特有取出元素方式。
3、Iterator中具备的功能只有hashNext(),next(),remove();
ListIterator中具备着对被遍历的元素进行增删改查的方法,可以对元素进行逆向遍历。
之所以如此,是因为ListIterator遍历的元素所在的容器都有索引。
 
   
 
  

你可能感兴趣的:(java基础(二))