集合的三种遍历方式

迭代器

/*
迭代器 遍历集合

迭代器Iterator  是一个接口

作用是绑定集合 迭代集合中的元素。

特殊之处: 在迭代期间可以移除迭代器指向的集合的元素

boolean hasNext() 
          检查集合列表中是否还有元素未进行遍历,检查的方式从第一个依次向后检查
 Object next() 
          获得当前遍历到的元素
 void remove() 
          从迭代器指向的 collection 中移除迭代器遍历到的当前元素。 

【注意:如果使用迭代器遍历集合元素,迭代器必须依附于集合。
简单而言:有一个迭代器对象,就必须有一个与之关联的集合对象
】

【注意: 在迭代期间 集合本身不能操作移除功能】

*/

import java.util.*;


class IteratorDemo 
{
    public static void main(String[] args) 
    {
        //System.out.println("Hello World!");

        Collection c = new ArrayList();
        c.add("蜡笔小新");
        c.add(5);
        c.add("淘气");

        // 将集合与迭代器绑定【】
        Iterator ite = c.iterator();
        
        while(ite.hasNext()){
            
            // 获取集合中的元素
            Object obj = ite.next();
        
            System.out.println(obj);

            // 移除迭代器指向的集合中的元素
            ite.remove();

            //c.remove("淘气");
            /*
            ConcurrentModificationException 并发修改异常
            */
        }
        System.out.println(c);

    }
}

foreach

/*
增强for循环进行遍历

【集合修改本身元素】
*/

import java.util.*;
class ForeachDemo 
{
    public static void main(String[] args) 
    {
        //System.out.println("Hello World!");

        Collection c = new ArrayList();
        c.add("路飞");
        c.add("娜美");
        c.add("鸣人");

        for(Object obj : c){
        //    c.remove("鸣人");// ConcurrentModificationException
            System.out.println(obj);
        }
    }
}

for

/*
普通for循环
注意:需要获得脚标 需要将集合转化为数组
*/

import java.util.*;

class ForDemo 
{
    public static void main(String[] args) 
    {
        //System.out.println("Hello World!");
        Collection c = new ArrayList();
        c.add("貂蝉");
        c.add("西施");
        c.add("王昭君");
        c.add("杨玉环");

        // 将集合转换为数组
        Object[] arr = c.toArray();

        for(int i = 0; i < arr.length; i++){
            c.remove("王昭君");
            System.out.println(arr[i]);
        }
    }
}

 

posted on 2017-07-31 10:09  不好说  阅读(373)  评论(0编辑  收藏  举报

导航