Java类集框架——Iterator和ListIterator 迭代器的使用(遍历集合)
来源:互联网 发布:seo 百度云 编辑:程序博客网 时间:2024/05/29 14:29
学习目标:
掌握集合输出的标准操作。
掌握Iterator接口的主要作用及使用注意事项。
掌握ListIterator与Iterator接口的关系及区别。
掌握ListIterator接口的使用限制。
在集合的操作中支持以下几种方式:
Iterator
ListIterator
foreach输出
Enumeration输出
Iterator接口简介
集合输出的标准操作:
在使用集合输出的时候必须要形成以下的一个思路:只要是遇到集合输出的操作,就一定使用Iterator接口,因为这是最标准的办法。
Iterator接口的输出原理:
Iterator是专门的迭代输出接口,所谓的迭代输出就是将元素一个个进行判断,判断其是否有内容,如果有内容则把内容取出。
对于Iterator而言,因为本身是一个接口,所以要想实例化则必须依靠Collection接口完成。
Iterator<E> iterator()
实例如下:
import java.util.List ;import java.util.ArrayList ;import java.util.Iterator ;public class IteratorDemo01{public static void main(String args[]){List<String> all= new ArrayList<String>() ;// all.add("hello") ;all.add("_") ;all.add("world") ;Iterator<String> iter = all.iterator() ;// 为Iterator接口实例化while(iter.hasNext()){// 判断是否有内容System.out.println(iter.next()) ;// 输出内容}}};
以上的操作代码属于Iterator的标准做法。
在Iterator接口中提供了remove()方法,此方法的功能是删除当前的对象。
import java.util.List ;import java.util.ArrayList ;import java.util.Iterator ;public class IteratorDemo02{public static void main(String args[]){List<String> all= new ArrayList<String>() ;// all.add("hello") ;all.add("_") ;all.add("world") ;Iterator<String> iter = all.iterator() ;// 为Iterator接口实例化while(iter.hasNext()){// 判断是否有内容String str = iter.next() ;if("_".equals(str)){iter.remove() ;// 删除元素}else{System.out.println(str) ;// 输出内容}}System.out.println("删除之后的集合:" + all) ;}};
在实际中是很少调用删除操作的,因为其本身的功能就是输出内容。当然,对于删除操作也有如下一个注意点:
List接口本身存在删除方法:remove
如果在使用迭代输出的过程中使用了List中的remove()执行删除操作,则代码将出现问题。
import java.util.List ;import java.util.ArrayList ;import java.util.Iterator ;public class IteratorDemo03{public static void main(String args[]){List<String> all= new ArrayList<String>() ;// all.add("hello") ;all.add("_") ;all.add("world") ;Iterator<String> iter = all.iterator() ;// 为Iterator接口实例化while(iter.hasNext()){// 判断是否有内容String str = iter.next() ;if("_".equals(str)){all.remove(str) ;// 删除元素}else{System.out.println(str) ;// 输出内容}}System.out.println("删除之后的集合:" + all) ;}};
在使用Itarator删除时,不要使用集合类中的remove()方法,而只能使用Iterator接口中的remove()方法。
ListIterator接口
Iterator接口的主要功能是由前向后单向输出,而此时如果想实现由后向前或者是由前向后的双向输出,则就必须使用Iterator的子接口ListIterator。
ListIterator接口的定义如下:
public interface ListIterator<E> extends Iterator<E>
虽然此接口可以进行双向输出,但是很遗憾的是Collection接口中并没有定义可以为此类实例化的操作,只有List接口中才存在了ListIterator接口的实例化操作。
实例如下:完成双向输出。
import java.util.ArrayList ;import java.util.List ;import java.util.ListIterator ;public class ListIteratorDemo01{public static void main(String argsp[]){List<String> all = new ArrayList<String>() ;all.add("hello") ;all.add("_") ;all.add("world") ;ListIterator<String> iter = all.listIterator() ;System.out.print("由前向后输出:") ;while(iter.hasNext()){String str = iter.next() ;System.out.print(str + "、") ;}System.out.print("\n由后向前输出:") ;while(iter.hasPrevious()){String str = iter.previous() ;System.out.print(str + "、") ;}}};
此时已经完成了双向输出操作。
但是,在使用此操作的时候一定要注意一点:一定要先进行由前向后输出,之后才能进行由后向前的输出。
使用ListIterator还可以进行增加以及替换元素。
add()
set()
import java.util.ArrayList ;import java.util.List ;import java.util.ListIterator ;public class ListIteratorDemo02{public static void main(String argsp[]){List<String> all = new ArrayList<String>() ;all.add("hello") ;all.add("_") ;all.add("world") ;ListIterator<String> iter = all.listIterator() ;System.out.print("由前向后输出:") ;while(iter.hasNext()){String str = iter.next() ;System.out.print(str + "、") ;iter.set("LIU - " + str) ;// 修改内容}System.out.print("\n由后向前输出:") ;iter.add("LX");while(iter.hasPrevious()){String str = iter.previous() ;System.out.print(str + "、") ;}}};
总结:
1、Iterator接口的功能是从前向后输出,属于单向的输出。
2、Iterator的主要功能就是完成迭代输出操作的。
3、在使用Iterator的时候最好不要删除数据。
4、如果要想使用ListIterator则只能依靠List接口完成。
5、如果要进行由后向前的输出,则只能先进行由前到后的输出。
3、对于此接口中的增加以及修改操作,用的不是太多,了解即可。
0 0
- Java类集框架——Iterator和ListIterator 迭代器的使用(遍历集合)
- JAVA提高篇(31)--Iterator和ListIterator 迭代器的使用(遍历集合)
- JAVA基础再回首(十四)——集合框架、Collection接口、迭代器Iterator、List接口、ListIterator列表迭代器
- 黑马程序员------集合的遍历Iterator/ListIterator
- [JAVA] 集合类增删改,Iterator, ListIterator
- java:Iterator和ListIterator
- Iterator和ListIterator的不同使用
- 08.集合框架(一)【集合概述】【接口Collection,Iterator,List,ListIterator】【类LinkedList,ArrayList】
- java Iterator 和 ListIterator 的不同使用方法
- java基础---Iterator和ListIterator的区别
- java中ListIterator和Iterator的区别
- Java中Iterator和ListIterator的区别
- Java:使用Iterator迭代器遍历集合数据
- 集合2 Iterator迭代器 ListIterator
- 使用Enumeration和Iterator遍历集合类
- 【集合】Iterator和ListIterator的区别和联系
- Iterator和listIterator的区别 迭代器
- Iterator和listIterator的区别 迭代器
- Sublime Text 3 For mac 插件安装
- mysql中decimal类型详解及类型转换
- LNMP状态管理命令
- Android闪光灯开发
- Android 四大组件之Service的基本使用
- Java类集框架——Iterator和ListIterator 迭代器的使用(遍历集合)
- 在eclipse中快速开发JNI(不使用Cygwin,一键生成C头文件.h,以及一键使用NDK交叉编译)
- 几种常用网页返回顶部代码
- 改动bundle Id 碰到的问题
- (二)Lua类型与值
- js事件封装函数,js跨浏览器事件处理机制
- HTML和CSS的入门小结
- LNMP添加、删除虚拟主机及伪静态使用教程
- 小菜学习日记—html实现简单下拉二级菜单