一起Talk Android吧(第八十九回:Java中的类集之Iterator)

各位看官们,大家好,上一回中咱们说的是Java中类集之Set的例子,这一回咱们说的例子是Java中的类集之Iterator。闲话休提,言归正转。让我们一起Talk Android吧!

看官们,我们在前面的章回中介绍了类集中常用的接口及其实现类,这些接口及其实现类都是用来存放数据的,本章回中我们将介绍一个不用来存放数据的接口:Iterator

有看官提问,不用来存放数据,它还有什么用呢?它主要用来输出类集中的数据,因此称它为类集中的迭代器

如果把List等接口比作是数据仓库,那么迭代器就是快递小哥,快递小哥把仓库中的数据送到千家万户。接下来我们看看快递小哥是如何把仓库中的数据送到千家万户的。

Iterator提供了hasNext(),next(),remove()方法。

  • hasNext()用来判断仓库中是否有元素
  • next()用来获取当前的元素
  • remove()用来删除当前的元素

关于它们的使用,有一个标准的格式:

//collection表示类集中的某个子接口或者实现类的对象 
Iterator<Integer> iterator = collection.iterator();
while(iterator.hasNext()){ 
    System.out.print(iterator.next()+" "); 
} 

这个格式在list,queue,set.这些子接口以及它们的子类中都可以使用。

看官们,这就是从类集中输出数据的标准操作。有看官说,这个看着很简单呀,我也可以去干快递小哥的工作,其实这个真不简单,类集封装了很东西后给大家提供了简洁的方法来输出类集中的数据。因此看上去简单,其实不简单,不信你干上一天快递小哥试试。

看官们,随着Java版本的升级,Java提供了foreach循环,因此我们可以使用foreach循环来输出类集中的数据。有看官说,它与迭代器相比,哪个输出操作好一些?从性能的角度看它们俩个平分秋色。因为编译器会把foreach循环转换为带有迭代器的循环。在实际的项目中,输出类集中数据的时候,使用迭代器和foreach循环都可以,至于使用哪种,没有特殊的规定。不过老一些的代码中使用迭代器的情况多一些。

看官们,我们在前面章回中输出类集中的数据时大部分使用了toString()方法,接下来我们通过代码来演示如何使用迭代器和foreach循环来输出类集中的数据。

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

public class iteratorEx {
    public static void main(String args[]){
        List<Integer> arrayList = new ArrayList<>();
        List<Integer> linkedList = new LinkedList<>();
        Set<Integer> hashSet = new HashSet<>();
        Set<Integer> treeSet = new TreeSet<>();

        //init all kinds of collection object
        for(int i=0; i<10; ++i) {
            arrayList.add(i);
            linkedList.add(i+1);
            hashSet.add(i+2);
            treeSet.add(i+3);
        }

        //output the content of collection object by Iterator
        Iterator<Integer> iter = arrayList.iterator();
        System.out.print("arrayList:  ");
        while(iter.hasNext()) {
            System.out.print(iter.next()+ " ");
        }
        System.out.println("");

        iter = linkedList.iterator();
        System.out.print("linkedList: ");
        while(iter.hasNext()) {
            System.out.print(iter.next()+ " ");
        }
        System.out.println("");

        iter = hashSet.iterator();
        System.out.print("hashSet:    ");
        while(iter.hasNext()) {
            System.out.print(iter.next()+ " ");
        }
        System.out.println("");

        iter = treeSet.iterator();
        System.out.print("treeSet:    ");
        while(iter.hasNext()) {
            System.out.print(iter.next()+ " ");
        }
        System.out.println("");

        //output the content of collection object by foreach
        System.out.println("-----------------------------------");
        System.out.print("arrayList:  ");
        for(Integer i: arrayList) {
            System.out.print(i+" ");
        }
        System.out.println(" ");

        System.out.print("linkedList: ");
        for(Integer i: linkedList) {
            System.out.print(i+" ");
        }
        System.out.println(" ");

        System.out.print("hashSet:    ");
        for(Integer i: hashSet) {
            System.out.print(i+" ");
        }
        System.out.println(" ");

        System.out.print("treeSet:    ");
        for(Integer i: treeSet) {
            System.out.print(i+" ");
        }
        System.out.println(" ");
    }
}

下面是程序的运行结果,请参考:

arrayList:  0 1 2 3 4 5 6 7 8 9 
linkedList: 1 2 3 4 5 6 7 8 9 10 
hashSet:    2 3 4 5 6 7 8 9 10 11 
treeSet:    3 4 5 6 7 8 9 10 11 12 
-----------------------------------
arrayList:  0 1 2 3 4 5 6 7 8 9  
linkedList: 1 2 3 4 5 6 7 8 9 10  
hashSet:    2 3 4 5 6 7 8 9 10 11  
treeSet:    3 4 5 6 7 8 9 10 11 12  

各位看官,关于Java中类集之Iterator的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!


猜你喜欢

转载自blog.csdn.net/talk_8/article/details/81056017