您的位置:首页 > 编程语言 > Java开发

java基础29 迭代器 listIterator() 及各种遍历集合的方法

2018-05-16 17:27 549 查看

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、用三种方式遍历集合中的元素

    第一种:for循环遍历(get方法)
    第二种:增强for循环遍历
    第三种:使用迭代器正序遍历
    第四种:使用迭代器逆序遍历

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("=============for循环遍历(get方法)=============");
19         for (int i = 0; i < list.size(); i++) {
20             System.out.println(list.get(i));
21         }
22     
23 System.out.println("=============增强for循环遍历=============");
24 for (String s:list){
25   System.out.println(s);
26 }
27 28 System.out.println("============使用迭代器正序遍历============"); 29 ListIterator<String> it=list.listIterator(); 30 while(it.hasNext()){ 31 System.out.println(it.next()); 32 } 33 34 System.out.println("============使用迭代器逆序遍历============"); 35 while(it.hasPrevious()){ 36 System.out.println(it.previous()); 37 } 38 } 39 }

 运行结果图

 

 

 

 

 

原创作者:DSHORE

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

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

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐