java开发——Iterator迭代器用来干什么的?和普通for、增强for有什么区别吗?

结论

迭代器:遍历方便,删除方便;(Iterator只有3个方法:hasNext()、next()、remove())

普通for:遍历时可删除,可修改;

增强for:遍历最方便,不可编辑。(实际上调用的还是迭代器)

所以,迭代器实际上是给增强for使用的!!当然,我们也可以直接使用迭代器,这个效率比普通for要高!

public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add("ddd");
        list.add("eee");
        list.add("fff");
        Iterator<String> iterator = list.iterator();
        //遍历方便,删除方便
        while (iterator.hasNext()) {
            String name = iterator.next();
            if (name.equals("ddd")) {
                iterator.remove();
            }
        }
        System.out.println(list.size());
        //普通for:遍历时可删除,可修改
        for (int i = 0; i < list.size(); i++) {
            String name = list.get(i);
            if ("bbb".equals(name)) {
                list.remove(list.get(i));
            }
            if("fff".equals(name)){
                list.set(i, "zzz");
            }
        }
        System.out.println(list.size());
        //增强for:遍历方便
        for (String name : list) {
//            if ("ccc".equals(name)) {
//                list.remove(name);//抛异常ConcurrentModificationException
//            }
            System.out.println(name);
        }
    }

 打印:

5
4
aaa
ccc
eee
zzz
 

补充:

1、如果只需要遍历,不需要删改,强烈建议使用增强for。

2、如果需要删除集合中某个元素,则可以使用迭代器。

3、需要删除和修改的话,只能用普通for了。

4、List集合比较特殊,有特殊的迭代器:ListIterator,下面简单介绍一下ListItorator

ListItorator除了有常规的Iterator的3个方法(hasNext()、next()、remove()),还有另外6个方法(add()、set()、previous()、hasPrevious()、nextIndex()和previousIndex())。所以,对list集合的遍历有着删改以及其他需求的,可以使用这个list专有的迭代器——ListItorator

觉得有用的老铁给我博客赞一下呗! 

发布了78 篇原创文章 · 获赞 131 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/river66/article/details/88871072
今日推荐