Iterator接口。集合输出

在集合中支持以下几种方式。

iterator

ListIterator

foreach输出

emumeration输出。

集合输出的标准操作

集合输出的时候必须形成以下的思路:只要碰到了集合输出的操作,就一定使用iterator接口,这是最重要的标准

iterator接口的操作原理

iterator是专门的迭代输出接口,所谓的迭代输出就是将元素一个个进行判断,判断其是否有内容,如果有内容,则把内容输出。

 

对于iterator而言,其本身是一个借口,所以要想实例化,需要必须依靠collection接口完成

在collection接口中可以看到这么一个方法:

可见,可以通过collection接口里面的方法iterator()调用iterator接口。

因此,所有继承于collection的类都有iterator()方法。

实例化iterator接口的标准方法

List<E> all=  new List子类<E>() ;
Iterator<E> iter = all.iterator() ;    // 为Iterator接口实例化

 

iterator的自带方法:

实例:

package 类集;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class test1{
    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()) ;    // 输出内容
        }
    }
};

输出结果:

hello
_
world

以上是iterator接口的标准做法。

在iterator接口中提供了remove方法,功能是删除当前对象。

package 类集;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class test1{
    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) ;
    }
};

输出结果:

hello
world
删除之后的集合:[hello, world]

实际操作中很少利用这个remove()方法。

LIst本身存在remove()方法。

如果在使用迭代输出的过程中使用了List中的remove()执行删除操作,则代码将出现问题。

package 类集;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class test1{
    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) ;
    }
};

输出结果:

hello
删除之后的集合:[hello, world]

这里会发现,一旦List的对象执行删除后就会停止执行循环。

 

在使用iteratror的时候,不要使用集合类中的remove()方法,只能使用iterator接口中方法。

而且iterator是从前往后输出,属于单向输出,

功能就是完成迭代输出操作。

 

posted @ 2016-12-26 22:30  美好的明天  阅读(1354)  评论(0编辑  收藏  举报