java基础29 迭代器 listIterator()

时间:2023-02-16 14:12:53

listIterator() 迭代器包含了 Iterator() 迭代器中的所有方法。

1、ListIterator的常用方法

    hasPrevious() :判断是否还有上一个元素,有则返回true  (反向遍历)
    previous() :返回列表中的上一个元素,并向后(上)移动光标位置
    next() :返回列表中的下一个元素,并且前进光标位置
    hasNext() :判断是否还有下一个元素,有则返回true  (正向遍历)
    set(E e) :指定元素替换由 next()previous()返回的最后一个元素
    add(E e):将指定的元素插入列表的末尾

实例

 1 package com.dhb.collection;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 import java.util.ListIterator;
 6 
 7 /**
 8  * @author DSHORE / 2018-5-16
 9  * ListIterator是一个接口
10  */
11 public class Demo5 {
12     public static void main(String[] args) {
13         List<String> list=new ArrayList<String>();
14         list.add("狗娃");
15         list.add("晶晶");
16         list.add("亮亮");
17         list.add("美美");
18         list.add("铁蛋");
19         
20         ListIterator<String> it=list.listIterator();//返回一个list接口中的特有迭代器
21         System.out.println("获取下一个元素:"+it.next()); //返回值:狗娃
22         System.out.println("是否有上一个元素:"+it.hasPrevious()); //返回值:true
23         System.out.println("获取上一个元素:"+it.previous()); //返回值:狗娃
24         while(it.hasNext()){//正序遍历     hasNext():判断集合中是否还有下一个元素
25             System.out.print(it.next()+",");//返回值:狗娃,晶晶,亮亮,美美,铁蛋,
26         }
27         
28         while(it.hasPrevious()){//反序遍历       hasPrevious():判断集合中是否还有上一个元素
29             System.out.println(it.previous());
30         }
31         it.next();
32         it.next();//下移了两位
33         it.set("张三");//把晶晶替换成张三了
34         System.out.println("集合的元素:"+list);//返回值:[狗娃, 张三, 亮亮, 美美, 铁蛋]
35     }
36 }

2、迭代器在遍历元素时需要注意的事项

  2.1、在迭代元素的过程中,不允许使用集合对象改变集合中元素的个数.

  2.2、如果需要添加或者删除,只能使用迭代器里面的方法进行操作.

  2.3、如果使用了集合对象改变了集合中元素的个数,那么就会报:ConcurrentModificationException异常

实例

 1 package com.dhb.collection;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 import java.util.ListIterator;
 6 
 7 /**
 8  * @author DSHORE / 2018-5-16
 9  *
10  */
11 public class Demo7 {
12 
13     public static void main(String[] args) {
14         List<String> list=new ArrayList<String>();
15         list.add("张三");
16         list.add("李四");
17         list.add("铁蛋");
18         
19         ListIterator<String> it=list.listIterator();
20         while(it.hasNext()){
21             System.out.print(it.next()+",");//返回结果:张三,李四,铁蛋,
22             it.add("二狗子"); //it是ListIterator迭代器的对象,所以不会报异常
23             //list.add("二狗子");//报异常:ConcurrentModificationException异常
24         }
25         System.out.println(list);//返回结果:[张三, 二狗子, 李四, 二狗子, 铁蛋, 二狗子]    while循环了三次,故有三个二狗子
26     }
27 }

3、用三种方式遍历集合中的元素

    第一种:get方法遍历
    第二种:使用迭代器正序遍历
    第三种:使用迭代器逆序遍历

 1 package com.dhb.collection;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 import java.util.ListIterator;
 6 
 7 /**
 8  * @author DSHORE / 2018-5-16
 9  *
10  */
11 public class Demo6 {
12     public static void main(String[] args) {
13         List<String> list=new ArrayList<String>();
14         list.add("张三");
15         list.add("李四");
16         list.add("王五");
17         
18         System.out.println("=============get方法遍历=============");
19         for (int i = 0; i < list.size(); i++) {
20             System.out.println(list.get(i));
21         }
22             
23         System.out.println("============使用迭代器正序遍历============");
24         ListIterator<String> it=list.listIterator();
25         while(it.hasNext()){
26             System.out.println(it.next());
27         }
28             
29         System.out.println("============使用迭代器逆序遍历============");
30         while(it.hasPrevious()){
31             System.out.println(it.previous());
32         }    
33     }
34 }

 运行结果图

java基础29 迭代器 listIterator()

 

 

 

 

原创作者:DSHORE

作者主页:http://www.cnblogs.com/dshore123/

原文出自:http://www.cnblogs.com/dshore123/p/9047060.html

欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐或评论,谢谢!