19.1.2 用程序代码段实现对链表的添加
【实例19.1】下面演示一个有关操作链表中数据的实例,代码如下所示。
01 import java.util.LinkedList;
02 import java.util.Iterator;
03 ///创建一个链表类对象List
04 ///创建一个迭代器对象it
05 ///通过迭代器对象it来遍历List对象中的元素
06 ///创建另一个迭代器对象it1来重新遍历List对象中的元素
07 public class file1
08 {
09 public void add()
10 {
11 LinkedList List=new LinkedList();
12 List.add("王鹏");
13 List.add("王浩");
14 List.add("王杰");
15 List.add("张杰");
16 List.add("李杰");
17 List.add("孙文杰");
18 List.add("赵杰");
19 Iterator it=List.iterator();
20 System.out.println("现在添加了如下的同学的姓名:");
21 while(it.hasNext())
22 {
23 System.out.println(it.next());
24 }
25 System.out.println("删除某些同学的姓名后,还剩下哪些同学呢?");
26 it.remove();
27 Iterator it1=List.iterator();
28 for(int i=0;i<List.size();i++)
29 {
30 System.out.println(it1.next());
31 }
32 }
33 public static void main(String[]args)
34 {
35 File1 f=new file1();
36 f.add();
37 }
38 }
【代码说明】仔细地分析这个程序段,首先需要讲述迭代器的具体用法。
迭代器中有一个方法:boolean hasNext(),主要用来判断这个链表是否到了结尾,如果到了结尾则返回false,否则返回true。
还有一个方法:object next(),主要将链表的指针指向下一个元素与下下一个元素之间。有一点要强调,链表的指针不是指向某个元素,而是指向某个元素的前面,如图19.5所示。系统指针指向集合中第一个元素的前面。当指针指向链表的尾部时,再调用hasNext()方法就会报错。
图 19.5 用迭代器来操作数据图
【运行效果】
王鹏
王浩
王杰
张杰
李杰
孙文杰
赵杰
删除某些同学的姓名后,还剩下哪些同学呢?
王鹏
王浩
王杰
张杰
李杰
孙文杰
上面的实例就是因为第一个迭代器在遍历后,已经到了链表的末尾,所以必须再建立一个新的迭代器,重新让指针停留在链表第一个元素的前面。