Collection集合

1.Collection & Map 的主要实现类

2.迭代器Iterator

3.Iterator执行原理

4.代码

/*
        集合的遍历 : 使用迭代器Iterator
        内部方法 : hasNext() :如果有下一个元素, 就返回true
                   next() :返回下一个元素
         */
        Collection collection = new ArrayList();
        ((ArrayList) collection).add(123);
        ((ArrayList) collection).add("ABC");
        ((ArrayList) collection).add(false);
        ((ArrayList) collection).add(4546);
        ((ArrayList) collection).add("DEF");
        Iterator iterator = collection.iterator();

        //方式一 : for (不推荐)
        for (int i=0;i < collection.size() ; i++){
            System.out.println(iterator.next());
        }

        //方式二: while (推荐)
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }

        //两种错误的遍历方式
        //方式一 :
        Iterator iterator1 = collection.iterator();
         while (iterator1.next()!=null){
             System.out.println(iterator.next());
         }
         //这种写法会导致跳着输出,且报异常

        //方式二:
        while (collection.iterator().hasNext()){
            System.out.println(collection.iterator().next());
        }
        //这种写法会导致重复输出第一个元素

        //remove() 注意 : 如果还没有调用next()或者刚调完remove(),就调用remove(), 会报IllegalStateException;
        Iterator iterator2 = collection.iterator();
        while (iterator2.hasNext()){
            Object next = iterator2.next();
            if ("ABC".equals(next)){
                iterator2.remove();
            }
        }
        System.out.println(collection);
        //如果执行完一次遍历后 , 再遍历需要重新创建Iterator

5.Foreach遍历集合

Collection collection = new ArrayList();
        ((ArrayList) collection).add(123);
        ((ArrayList) collection).add("ABC");
        ((ArrayList) collection).add(false);
        ((ArrayList) collection).add(4546);
        ((ArrayList) collection).add("DEF");

        //foreach遍历 : 底层调用的还是Iterator
        for (Object o : collection) {
            System.out.println(o);
        }

6.Collections : 集合工具类

原文地址:https://www.cnblogs.com/Anonymity-zhang/p/14373862.html