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.1.2 用程序代码段实现对链表的添加 - 图1

图 19.5 用迭代器来操作数据图

【运行效果】


王鹏

王浩

王杰

张杰

李杰

孙文杰

赵杰

删除某些同学的姓名后,还剩下哪些同学呢?

王鹏

王浩

王杰

张杰

李杰

孙文杰


上面的实例就是因为第一个迭代器在遍历后,已经到了链表的末尾,所以必须再建立一个新的迭代器,重新让指针停留在链表第一个元素的前面。