java-集合框架3-迭代器的使用

package cn.burce.iterator;

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

/*
 * 集合中的迭代器 获取集合中的元素
 * 接口Iterator:两个抽象方法
 * Boolean hasNext()判断集合中还有没有可以取出的元素,如果有返还True
 * next()取出集合的下一个元素
 * Iterator接口,需要实现类
 * Collection接口定义方法Iterator Iterator()
 * ArrayList 重写Iterator(),返回了Iterator接口实现类的对象
 * 使用ArrayList集合的对象
 * Iterator it = array.iterator(),运行结果就是Iterator接口实现类的对象
 * it是接口的实现类对象,调用方法hasNext()和next()集合元素迭代
 */
public class IteratorLearn {
    public static void main(String[] args) {
        Collection<String> c = new ArrayList<String>();
        c.add("小明");
        c.add("小军");
        c.add("小和");
        c.add("小啊");
        c.add("123");
        // 迭代器对集合ArrayList中的元素取出
        // 调用集合的方法iterator()获取出,Iterator接口的是实现类对象
        Iterator<String> it = c.iterator();
        // 接口实现类对象,调用方法hasNext()判断集合中是否有元素
        // 并用next()取出元素
        while (it.hasNext())
        {
            System.out.println(it.next());
        }
        System.out.println("--------------------------");
        for (Iterator<String> it1 = c.iterator(); it1.hasNext();)
        {
            System.out.println(it1.next());
        }
        System.out.println("-----------------------------");
        // 集合可以存储任何类型的对象
        // 集合中不指定数据类型,那就表示什么都可以存储
        Collection c1 = new ArrayList();
        c1.add("我");
        c1.add("wwwwww");
        // 迭代器获取
        Iterator it2 = c1.iterator();
        while (it2.hasNext())
        {
            System.out.println(it2.next());// 打印的这个是Object类型
            String s = (String) it2.next();// 取长度需要向下转型
            System.out.println(s.length());// 尽量加数据类型
        }
    }
}

package cn.burce.List;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ListDemo1 {
    /*
     * 迭代器的并发异常 java.util.ConcurrentModificationException
     * 不能修改集合长度
     */
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("abc1");
        list.add("abc2");
        list.add("abc3");
        list.add("abc4");
        // 使用迭代器遍历,获取时候判断集合中是否有abc3,有就添加ABC3
        Iterator<String> it = list.iterator();
        while (it.hasNext())
        {
            String s = it.next();
            if (s.equals("abc3"))
            {
                list.add("ABC3");
            }
            System.out.println(s);
        }
    }
}

原文地址:https://www.cnblogs.com/BruceKing/p/13379627.html