java基础29 迭代器 listIterator() 及各种遍历集合的方法
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 欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!) |