Iterator接口

本章目标
掌握集合输出的标准操作
掌握Iterator接口的主要作用及使用注意事项

 

集合的输出
在类集中提供了以下四种的常见输出方式:
——Iterator:迭代输出,是使用最多的输出方式;
——ListIterator:是Iterator的子接口,专门用于输出List中的内容;
——Enumeration:是一个旧的接口,功能与Iterator类似;
——foreach:JDK 1.5之后提供的新功能,可以输出数组或集合。

 

Iterator接口简介
集合输出的标准操作:
——“在使用集合输出的时候必须形成以下的一个思路:‘只要是碰到了集合输出的操作,就一定使用Iterator接口’,因为这是最标准的做法”
Iterator接口的操作原理:
——Iterator是专门的迭代输出接口,所谓的迭代输出就是将元素一个个进行判断,判断其是否有内容,如果有内容则把内容取出

 

Iterator接口中的常用方法
Iterator接口_第1张图片
 

实例操作一:输出Collection中的全部内容

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorDemo01 {
	public static void main(String[] args) {
		List<String> all = new ArrayList<String>();//实例化 List 接口
		all.add("hello");//增加元素
		all.add("_");//增加元素
		all.add("world");//增加元素
		Iterator<String> iter = all.iterator();//直接实例化 Iterator 接口
		while(iter.hasNext()){//依次判断
			System.out.print(iter.next()+"、");//输出内容
		}
	}
/* 结果:
 * hello、_、world、
 * */
}

 

操作二:使用Iterator删除指定内容

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorDemo02 {
	public static void main(String[] args) {
		List<String> all = new ArrayList<String>();//实例化 List 接口
		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.print(str+"、");//输出元素内容
			}
		}
		//输出集合内容,调用 toString() 方法
		System.out.println("\n删除之后的集合:"+all);
	}
/* 结果:
 * hello、world、
 * 删除之后的集合:[hello, world]
 * */
}

 

迭代输出时删除元素的注意点
正常情况下,一个集合要把内容交给Iterator输出,但是集合操作中也存在一个remove()方法,如果在使用Iterator输出时,集合自己调用了删除方法,则会出现运行时的错误。

 

不正确的删除方法

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorDemo03 {
	public static void main(String[] args) {
		List<String> all = new ArrayList<String>();//实例化 List 接口
		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.print(str+"、");//输出元素内容
			}
		}
		//输出集合内容,调用 toString() 方法
		System.out.println("\n删除之后的集合:"+all);
	}
/* 结果:
 * hello、
 * 删除之后的集合:[hello, world]
 * */
}

 

 

 

你可能感兴趣的:(iterator)