java面向对象2(27) 迭代器

个人博客导航页(点击右侧链接即可打开个人博客):大牛带你入门技术栈 

迭代器【重点】

遍历集合。

ArrayList:

  • 普通for循环:集合名.fori

              取出某个元素:集合名.get(索引);

             限制:没有索引的集合,不能进行普通for循环

              优点:可以进行循环中 集合数据的增删

  • 增强for循环:集合名.for

         取出某个元素:

              for(String x:list){

                     //x

               }

          限制:不能在循环中做 增、删

         优点:可以进行快速的正向循环

            没有索引的集合也能使用

  • 迭代器:List、Set

               取出元素:next()方法

优点:

         1、没有索引也能迭代

         2、迭代中可以进行方便删除

缺点:书写不如增强for简单

迭代器单向的,不能回头

Iterator接口方法

描述

boolean hasNext()

判断是否还有下一个

true:还有数据

E next();

获得下一个元素 (会让指针向下移动)

void remove();

删除当前元素

/*
    迭代器在 集合数据循环中删除 的操作上,较为方便
* 迭代器:List/set
*   方法:hasNext()   判断:迭代器中下一个是否有数据
*                       true:有数据
*                       false:没有数据
*         next()      获取迭代器中下一个元素,并返回。
*         remove()    删除当前迭代的元素
* */
public static void main(String[] args) {
    //1、ArrayList
    //1.1、定义集合
    ArrayList<String> list = new ArrayList<>();
    //1.2、填充数据
    Collections.addAll(list,"aa","bb","cc","dd","ee","ff");
    //1.3、使用迭代器进行遍历 (迭代器中无索引)
    Iterator<String> i = list.iterator();
    while (i.hasNext()){
        //获取元素
        String x = i.next();
        //看看当前取出的元素是否为dd,如果为dd删除元素
        if(x.equals("dd")){
            i.remove();
        }
        System.out.println(x);
    }
    System.out.println("迭代后的集合:"+list);
    //2、HashSet
    HashSet<String> set = new HashSet<>();
    Collections.addAll(set,"aa","bb","cc","dd","ee","ff");
    //2.1、获取迭代器
    Iterator<String> i2 = set.iterator();
    //2.2、使用迭代器循环
    while (i2.hasNext()){
        //获取数据
        String x = i2.next();
        //如果当前元素是ff,就删除
        if(x.equals("ff")){
            i2.remove();
        }
    }
    System.out.println(set);
}

只有List和Set集合可以使用迭代器

附Java/C/C++/机器学习/算法与数据结构/前端/安卓/Python/程序员必读/书籍书单大全:

(点击右侧 即可打开个人博客内有干货):技术干货小栈
=====>>①【Java大牛带你入门到进阶之路】<<====
=====>>②【算法数据结构+acm大牛带你入门到进阶之路】<<===
=====>>③【数据库大牛带你入门到进阶之路】<<=====
=====>>④【Web前端大牛带你入门到进阶之路】<<====
=====>>⑤【机器学习和python大牛带你入门到进阶之路】<<====
=====>>⑥【架构师大牛带你入门到进阶之路】<<=====
=====>>⑦【C++大牛带你入门到进阶之路】<<====
=====>>⑧【ios大牛带你入门到进阶之路】<<====
=====>>⑨【Web安全大牛带你入门到进阶之路】<<=====
=====>>⑩【Linux和操作系统大牛带你入门到进阶之路】<<=====

天下没有不劳而获的果实,望各位年轻的朋友,想学技术的朋友,在决心扎入技术道路的路上披荆斩棘,把书弄懂了,再去敲代码,把原理弄懂了,再去实践,将会带给你的人生,你的工作,你的未来一个美梦。

发布了110 篇原创文章 · 获赞 0 · 访问量 3708

猜你喜欢

转载自blog.csdn.net/jishulaozhuanjia/article/details/104870652