Java类集之Iterator接口

(一)集合的输出java

         在类集中提供了如下四种的常见输出方式:数组

         Iterator:迭代输出,是使用最多的输出方式;spa

         ListIterator:是Iterator的子接口,专门用于输出List中的内容;code

         Enumeration:是一个旧的接口,功能与Iterator相似;blog

         foreach:JDK 1.5以后提供的新功能,能够输出数组或集合。索引

(二)Iterator接口简介接口

2.1 Iterator接口操做原理rem

       集合输出的标准操做: “在使用集合输出的时候必须造成如下的一个思路:‘只要是碰到了集合输出的操做,就必定使用Iterator接口’,由于这是最标准的作法”it

        Iterator接口的操做原理: Iterator是专门的迭代输出接口,所谓的迭代输出就是将元素一个个进行判断,判断其是否有内容,若是有内容则把内容取出。io

           

2.2 Iterator接口中的经常使用方法

No.

方法

类型

描述

1

public boolean hasNext()

普通

判断是否有下一个值

2

public E next()

普通

取出当前元素

3

public void remove()

普通

移除当前元素

实例操做一:输出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("I"); 			    // 增长元素
		all.add("_"); 				// 增长元素
		all.add("love"); 			// 增长元素
        all.add("_"); 				// 增长元素
		all.add("you");             // 增长元素
		Iterator<String> iter = all.iterator();	// 直接实例化Iterator接口S
		while (iter.hasNext()) {			    // 依次判断
			System.out.print(iter.next() + "、");// 输出内容
		}
	}
}

操做二:使用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("I"); 			    // 增长元素
		all.add("_"); 				// 增长元素
		all.add("love"); 			// 增长元素
        all.add("_"); 				// 增长元素
		all.add("you");             // 增长元素
		Iterator<String> iter = all.iterator();	// 直接实例化Iterator接口S
		while (iter.hasNext()){ // 依次判断          			    
          String str=iter.next();
           if("_".equals(str)){
           iter.remove();
             } else{
               System.out.print(str + "、");// 输出内容
              }
			}   
              System.out.println("\n删除以后的集合:"+all);
	}
}

迭代输出时删除元素的注意点:

       正常状况下,一个集合要把内容交给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("I"); 				    // 增长元素
		all.add("_"); 				    // 增长元素
		all.add("love"); 				// 增长元素
        all.add("_"); 				    // 增长元素
		all.add("you"); 				// 增长元素
		Iterator<String> iter = all.iterator(); 	// 直接实例化Iterator接口S
		while (iter.hasNext()) {
			String str = iter.next();    // 取出内容
			if ("_".equals(str)) {		 // 判断内容是不是“_”
				all.remove(str); 		 // 删除当前元素,使用集合删除 (使用集合删除,这里就有问题,出现异常)
			} else {
				System.out.print(str + "、");	// 输出元素内容
			}
		}
		System.out.println("\n删除以后的集合:" + all);	// 输出集合内容,调用toString()方法
	}
}

2.3 ListIterator接口

      Iterator接口的主要功能是由前向后单向输出,而此时若是想实现由后向前或是由前向后的双向输出,则就必须使用Iterator的子接口 —— ListIterator。 ListIterator接口定义以下: public interface ListIterator<E> extends Iterator<E>

2.3.1 ListIterator接口中的经常使用方法

No.

方法

类型

描述

1

public boolean hasNext()

普通

判断是否有下一个值

2

public E next()

普通

取出当前元素

3

public void remove()

普通

移除当前元素

4

public void add(E o)

普通

将指定元素增长集合

5

public boolean hasPrevious()

普通

判断是否有上一个元素

6

public E previous()

普通

取出当前元素

7

public int nextIndex()

普通

返回下一个元素的索引号

8

public int previousIndex()

普通

返回上一个元素的索引号

9

public void set(E o)

普通

替换元素

区别于Iterator:

          与Iterator接口不一样的是,ListIterator接口只能经过List接口实例化,即:只能输出List接口中的内容。在List接口中定义了能够为ListIterator接口的实例化方法: public ListIterator<E> listIterator()

实例操做一:进行双向迭代

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class ListIteratorDemo01 {
	public static void main(String[] args) {
		List<String> all = new ArrayList<String>(); 	// 实例化List接口
		all.add("I"); 				// 增长元素
		all.add("_"); 					// 增长元素
		all.add("love"); 				// 增长元素
         all.add("_"); 					// 增长元素
		all.add("you"); 				// 增长元素
		ListIterator<String> iter = all.listIterator();// 实例化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 + "、");		// 输出内容
		}
	}}

实例操做二:增长及替换元素

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class ListIteratorDemo02 {
	public static void main(String[] args) {
		List<String> all = new ArrayList<String>(); 	// 实例化List接口
		all.add("I"); 				// 增长元素
		all.add("_"); 				// 增长元素
		all.add("love"); 				// 增长元素
        all.add("_"); 				// 增长元素
		all.add("you"); 				// 增长元素 
		ListIterator<String> iter = all.listIterator();	// 实例化ListIterator接口
		System.out.print("由前向后输出:");		// 信息输出
		while (iter.hasNext()) { 			// 由前向后输出
			String str = iter.next();		// 取出内容
			System.out.print(str + "、");		// 输出内容
			iter.set("yes-" + str); 		// 替换元素
		}
		System.out.print("\n由后向前输出:");		// 信息输出
		iter.add("do"); 				// 增长元素
		while (iter.hasPrevious()) { 			// 由前向后输出
			String str = iter.previous();		// 取出内容
			System.out.print(str + "、");		// 输出内容
		}
	}
}
相关文章
相关标签/搜索