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 + "、");		// 輸出內容
		}
	}
}
相關文章
相關標籤/搜索