迭代器

2018-05-22  本文已影响0人  在努力中
package test;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/**
 * 迭代器:用来遍历数组
 * @author 李双阳
 *
 */
public class TestIterator {
    public static void main(String[] args) {
        //定义一个列表
        Collection c = new ArrayList();
        
        c.add("一");
        c.add("二");
        c.add("三");
        c.add("四");
        c.add("五");
        
        
        /**第一种遍历方式*/
        //第一种便利方式,转成数组
        Object[] arr = c.toArray();
//      arr[1] = "";
        //for循环遍历输出
        System.out.println("============for循环==============");
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
        //增强for循环
        System.out.println("===========增强for循环(不涉及下标,只遍历)============");
        for (Object object : arr) {
            System.out.println(object);
        }
        //集合元素copy到数组中遍历,效率低,导致了内存浪费
        
        /**第二种遍历方式
         * 迭代器:
         * 1.Iterator() ------------获取当前集合迭代器
         * 2.boolean hasNext()------判断有没有下一个元素
         * 3.Object next()----------获取当前迭代器指向的元素,获取之后,会指向下一个元素
         * 4.void remove()----------删除当前迭代器通过next()获取到的元素
         * */
        //获取当前集合迭代器
        Iterator it = c.iterator();
        /*
        System.out.println("当前元素之后还有元素吗 ? "+it.hasNext());
        System.out.println("当前迭代器指向的元素是:  "+it.next());//一
        System.out.println("当前迭代器指向的元素是:  "+it.next());//二,因为会获取当前对象后,指向下一个对象,最后一个会报错
        it.remove();//删除当前对象--二
//      it.remove();//不能连续删除两个,因为指向被删除了,如果没有next()上一句也回报错,所以remove不能单独使用
        System.out.println(c);//没有了二
        */
        System.out.println("===========迭代器遍历(Iterator)============");
        while(it.hasNext()){
            System.out.println(it.next());
            it.remove();//可以用来清空整个集合
        }
        System.out.println("是否为空: "+c.isEmpty());//true
        
    }
}
上一篇 下一篇

猜你喜欢

热点阅读