• java中的迭代器


    首先我们需要迭代器(Iterator)呢?什么是迭代?

      对过程的重复,称为迭代。迭代器是遍历Collection(单列)集合的通用方式,可以在对集合遍历的同时进行添加,删除等

    操作。

    迭代器的常用方法

      next():返回迭代器的下一个元素对象

      hasNext():如果仍有元素可以迭代,则返回true(简单来说就是判断迭代器中是否有元素)

      注意:列表迭代器是List体系独有的遍历方式,可以在对集合遍历的同时进行添加和删除等操作,

    但是必须通过调用列表迭代器的方式来实现

      使用步骤:

        1.根据集合对象获取其对象的迭代器对象

        2.判断迭代器中是否有元素

        3.如果有就获取元素

    总结:普通迭代器在遍历集合的同时不能添加或删除元素,否则会报:并发修改异常  

       语法: Iterator 变量名 = 集合名.iterator();

       并发修改异常:在遍历的同时进行删除或者添加

       列表迭代器可以在遍历集合的同时添加或删除元素  : 

        语法: ListIterator 变量 = 集合名.listIterator();

    栗子:

    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    public class diedaiqi {
        public static void main(String[] args) {
            //创建集合对象
            List list = new ArrayList();
            //添加到集合中
            list.add("23");
            list.add("24");
            list.add("25");
            //根据集合对象获取其中对象的迭代器对象
            Iterator lis = list.iterator();
            while (lis.hasNext()){   //判断迭代器中是否有元素,如果有,则循环
               String i = (String)lis.next();  //获取到的值是object对象,转成字符串类型,因为Object是顶级父类,向下转型
                System.out.println(i);
            }
        }
    
    }

    栗子二:

      需求:判断集合中如果有字符串b,则在其后便添加一个新的字符串"ftsm"

    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import java.util.ListIterator;
    
    public class diedaiqi {
        public static void main(String[] args) {
            //创建集合对象
            List list = new ArrayList();
            //添加到集合中
            list.add("a");
            list.add("b");
            list.add("c");
            //1.根据集合对象获取其对象的列表迭代器对象
            ListIterator lit = list.listIterator();  // 列表迭代器
            //2判断迭代器中是否有元素
            while (lit.hasNext()){
                //3.如果有就获取迭代器中的元素
                String i = (String)lit.next();
                System.out.println(i);
                //4.判断迭代器中是否有b
                if("b".equals(i)){    //注意:常量一般在前,变量在后,因为常量在前可以避免空指针异常,(变量为空调用方法就会引空指针异常)
     //               list.add("ftsm");  //这样写不行。会报ConcurrentModificationException异常(并发修改异常)并发修改异常:在遍历的时候同时进行添加或删除
                lit.add("ftsm");
                }
    
            }
            //打印新的列表集合
            System.out.println(list);
        }
    
    }

      

      

    并发修改异常:在遍历的时候同时进行添加或删除
  • 相关阅读:
    深入研究Servlet线程安全性问题
    Sun公司java语言编码规范
    JAVA的内省机制(introspector)与反射机制(reflection)[转]
    Oracle的悲观锁和乐观锁
    java中120个经典问题
    自定义Java异常
    Java事务处理总结
    Tomcat内存溢出的三种情况及解决办法分析
    .net基础
    C#.Net中的转义
  • 原文地址:https://www.cnblogs.com/zxy6/p/14251705.html
Copyright © 2020-2023  润新知