精华内容
下载资源
问答
  • /** * 注意:因为迭代器只能遍历一次 所以每次用完都要重新填充一次 否则会出现只替换了一次检查... (在要执行多次迭代器后面重新填充即可) * * @param id * @return */ 转载于:https://www.cnblogs.com/kinome...

     

    /**
    * 注意:因为迭代器只能遍历一次 所以每次用完都要重新填充一次 否则会出现只替换了一次检查配置项的情况
    * templateJsonIterator = templateJsonObject.keys(); (在要执行多次的迭代器后面重新填充即可)
    *
    * @param id
    * @return
    */




    转载于:https://www.cnblogs.com/kinome/p/9969938.html

    展开全文
  •  迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。Java中的Iterator功能比较简单,并且只能单向...

    迭代器(Iterator)
      迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。Java中的Iterator功能比较简单,并且只能单向移动:
      使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。
      Iterator中有三个方法:分别为hasNext(),next(),remove()
      (1) hasNext()方法

    	/**
         * Returns {@code true} if the iteration has more elements.
         * (In other words, returns {@code true} if {@link #next} would
         * return an element rather than throwing an exception.)
         *
         * @return {@code true} if the iteration has more elements
         */
        boolean hasNext();
    

    从字面意思上看就是iteration中是否还有更多的元素
      (2) next()方法

        /**
         * Returns the next element in the iteration.
         *
         * @return the next element in the iteration
         * @throws NoSuchElementException if the iteration has no more elements
         */
        E next();
    

    也很简单,就是返回迭代器中下一个元素,没有则throws NoSuchElementException。
      (3) remove()方法

        /**
         * Removes from the underlying collection the last element returned
         * by this iterator (optional operation).  This method can be called
         * only once per call to {@link #next}.  The behavior of an iterator
         * is unspecified if the underlying collection is modified while the
         * iteration is in progress in any way other than by calling this
         * method.
         * /
    default void remove() {
            throw new UnsupportedOperationException("remove");
    }
    

    就是从基础集合中删除最后一个返回的元素。
    实例:

    public class MyIterator {
    
        public static void main(String[] args) {
    
            ArrayList<String> list = new ArrayList<>();//首先定义一个list集合,String类型
            list.add("zhangsan");
            list.add("lisi");
            list.add("wangwu");//向集合中添加三个元素
    
            System.out.println(list.size());//输出大小
            System.out.println(list);//输出集合
    
            Iterator<String> iterator = list.iterator();//创建一个迭代器Iterator
            while (iterator.hasNext()){//遍历迭代器
                String a = iterator.next();
                if (a.equals("zhangsan")){
                    iterator.remove();//删除迭代器中满足条件的元素
                }
            }
    
            System.out.println(list.size());//输出大小
            System.out.println(list);//输出集合
    
        }
    }
    

    上面我定义为String类型的,可以放对象等类型,
    为什么用迭代器Itereator遍历集合,然后删除满足条件的元素呢?为什么不用普通for循环,或者增强for循环来删除呢?
    用了就知道,表面看没什么错误,说明你没遇到错误,其实已经错了。
    当我们用普通循环删除元素后,后面元素的坐标也会发生变化,
    例如:你讲index=5的元素删了,那么index=6的元素就顶替了index=5的位置,那么原本index=6的那个元素(也就是删除后index=5的那个元素)就不会被遍历。后面的元素坐标都会往前进1,从而导致有个元素是被遗漏的。
    迭代器遍历不会有这种影响。
    做个笔记记录一下下。
    have a nice day!!!!!!!!

    展开全文
  • 注意:再循环中只能用一了会报java.util.NoSuchElementException(解决方法见相邻博文,点击进入) 2. 使用hasNext()检查序列中是否还有元素,有则返回true。 3.使用remove()将迭代器新返回的元素删除。 ...

    迭代器的三个方法

    1.使用next()获得序列中的下一个元素;注意:再循环中只能用一次,多了会报java.util.NoSuchElementException(解决方法见相邻博文,点击进入)

    2. 使用hasNext()检查序列中是否还有元素,有则返回true。

    3.使用remove()将迭代器新返回的元素删除。

     

     

    两种循环方法:

     

    //使用for循环迭代
    for (Iterator iter = l.iterator(); iter.hasNext();) {
       String str = (String)iter.next();
       System.out.println(str);
    }
    
    //迭代器用于while循环
    Iterator iter = l.iterator();
    while(iter.hasNext()){
       String str = (String) iter.next();
       System.out.println(str);
    }
    
    

     

     

     

     

     

     

     

    展开全文
  • 今天在学习的时候,碰到用迭代器遍历集合的时候一直没有元素输出,琢磨了好久我才知道 “同一个迭代器只能遍历,如果写了两个遍历,则第二个遍历无法输出” 我的问题原因"我想删掉集合中的一个元素然后再遍历...

    今天在学习的时候,碰到用迭代器去遍历集合的时候一直没有元素输出,琢磨了好久我才知道 “同一个迭代器只能遍历一次,如果写了两个遍历,则第二个遍历无法输出”

    我的问题原因"我想删掉集合中的一个元素然后再遍历输出,结果输出结果还是没有删除之前的"

    public void test5(){
            /*
            迭代器当中的 remove方法
             */
            Collection collection=new ArrayList();
            collection.add(1234);
            collection.add(new String("123"));
            collection.add(new Person(18,"Jerry"));
            Iterator iterator = collection.iterator();
    
            while (iterator.hasNext()){
                Object next = iterator.next();//next() 方法返回的是下一个对象
                if (next.equals("123")){
                    iterator.remove();
                }
                System.out.println(next+"***");
            }
    
            while (iterator.hasNext()){
                System.out.println(iterator.next()+"$$$$");
            }
    
        }
    
    运行结果	:这就说明下一个迭代器根本没执行
    
    1234***
    123***
    Person{age=18, name='Jerry'}***
    
    

    经过我翻阅资料,才弄明白同一个迭代器只能遍历一次,于是再造一个迭代器,即可解决问题

      public void test5(){
            /*
            迭代器当中的 remove方法
             */
            Collection collection=new ArrayList();
            collection.add(1234);
            collection.add(new String("123"));
            collection.add(new Person(18,"Jerry"));
            Iterator iterator = collection.iterator();
    
            while (iterator.hasNext()){
                Object next = iterator.next();//next() 方法返回的是下一个对象
                if (next.equals("123")){
                 iterator.remove();
               }
                System.out.println(next+"***");
            }
            Iterator iterator1 = collection.iterator();
            while (iterator1.hasNext()){
                System.out.println(iterator1.next()+"$$$$");
            }
        }
    
    修改后的运行结果:正常遍历输出了 
    
    1234***
    123***
    Person{age=18, name='Jerry'}***
    1234$$$$
    Person{age=18, name='Jerry'}$$$$
    

    总结:解决问题的过程是痛苦的,但是成功解决让人真的很开心!!!

    展开全文
  • 需求:存储自定义对象并遍历  有5个学生,学生有姓名,年龄,遍历5个学生,输出5个学生对应的信息(集合改进) 分析:      1)创建一个学生类  2)在测试类中,创建集合对象  3)创建5个具体学生对象,并且添加集合中...
  • Java迭代器Iterator接口是用来对集合中的对象进行遍历或者移除操作的,大多数是遍历操作的 下面介绍迭代器的使用: ArrayList list=new ArrayList();  list.add("A");  list.add("B");  list....
  • 普通for循环:每次遍历一个索引的元素之前,都要访问之前所有的索引。 每次访问一个元素后,都会用游标记录当前访问元素的位置,遍历一个元素,记录一个位置。 普通 for 循环 普通 for 循环遍历方式如下: ...
  • Iterator:迭代器!用来遍历容器~所有实现了Collection接口的容器类都有一个iterator方法用以返回一个实现Iterator接口的对象。在这个迭代其中主要是包含了三个方法: Boolean hasNext():用于判断是否有下一个元素...
  • 错误代码: while(dxfdoc.getDXFBlockIterator().hasNext()){ DXFBlock dXFBlock = (DXFBlock)dxfdoc.getDXFBlockIterator().next();...这样写的话,就相当于一直遍历iter,就一直获取下一个,ok
  • Iterator迭代器 Interface Iterator<E> Iterator是一个依赖于集合而存在的接口,是遍历集合的一种方式。 Iterator的常用方法: booleanhasNext() 如果迭代具有更的元素,则返回true 。 (换句话说,...
  • 为什么使用for循环遍历删除ArrayList中的元素会出错,而使用迭代器方法就不会出错(此处不考虑fast-fail机制问题)? 查阅各种博客,只知道遍历删除元素时的正确方法,但是不知道为什么该方法正确,因此写这篇博客...
  • 一、 HashMap staff = new HashMap(); 添加关键字值对,自己写 遍历 Set entries = staff.entrySet(); Iterator iter =...
  • * 解读ArrayList集合中,for循环遍历迭代器遍历的不同 * * @author MoCha * @date 2020/4/3 */ public class Demo { public static void main(String[] args) { ArrayList<Integer> arrayList = new ...
  • 对使用迭代器时用到的next()方法的详细介绍 前言  在使用集合存储数据后,我们常使用迭代器iterator(或增强for循环,本质上是迭代器)遍历列表,这样让我们可以很方便地取出列表中的数据元素,而使用迭代器遍历列表...
  •  迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。  Java中的Iterator功能比较简单,并且只能...
  • 文章目录Collection集合Iterator迭代器的体系结构迭代器的注意事项:泛型什么是泛型泛型可以应用在哪些地方泛型的高级通配符List集合ListIterator迭代器List集合的遍历方式: Collection集合 public interface ...
  • 使用Iterator迭代器遍历集合数据

    千次阅读 2018-09-24 16:02:02
     迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。  Java中的Iterator功能比较简单,并且只能...
  • Java迭代器(iterator详解以及和for循环的区别)

    万次阅读 多人点赞 2018-05-31 19:07:18
    前言: 迭代器是一种模式、详细可见其设计模式,可以使得序列类型的数据结构的遍历行为与被遍历的对象分离,即我们无需关心该序列的底层结构是什么样子的。只要拿到这个对象,使用迭代器就可以遍历这个对象的内部。...
  • java迭代器退出迭代 随着本学期的结束,我想我会分享一个关于如何非常熟悉Java迭代器的小故事。 现实世界语境 就上下文而言,我开设了第二年软件组件课程,这是尝试进入该专业的学生的最后障碍。 当然,这门课程...
  • 迭代器iterator的使用 遍历List,Set,Map 迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为...
  • 迭代器(Iterator)  Java中的Iterator功能比较简单,并且只能单向移动:  (1) 使用方法iterator()要求容器返回一个Iterator。第一调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是...
  • 同一个Iterator 多次遍历遇到的坑

    千次阅读 2019-05-07 09:53:10
    上述的例子只是为了讲解一下Iterator 多次遍历需要进行初始化,如果你遇到了jpa无法动态拼接sql的情况,而实际需求又需要大量动态拼接sql。个人建议马上集成query dsl,别学我通过删除list来达到多条件查询的目的。...
  • Java迭代器的使用

    万次阅读 多人点赞 2019-03-03 22:14:56
    迭代器 1.概述: 帮助我们做集合遍历的工具。 2.作用: java中提供了很种集合,它们在存储元素时,采用的存储方式不同。所以当我们要取出这些集合中的元素时,可以通过一种通用的获取方式来完成。 Collection...
  • Iterator集合迭代器遍历练习 学生类 public class Student { //成员变量 private String name; private int age; //构造方法 public Student() { super(); // TODO Auto-generated constructor stub } //...
  • 创建一个list的集合 ****List list=new ArrayList(); //向末尾添加元素 list.add("吴用");//0 ... //使用ListIterator迭代器 ListIterator listIterator=list.listIterator(); while(list...
  •  对于keySet其实是遍历了2,一是转为iterator,一就从hashmap中取出key所对于的value。而entryset只是遍历了第一,他把key和value都放到了entry中,所以就快了。 HashMap作为一种强大的数据结构,在...
  • Collection.size(),此时再使用while(Iterator.hasNext())做循环条件时,返回的是false,无法进行下次遍历,如果需要多次使用Iterator进行遍历,当一次遍历完成,需要重新初始化Collection的iterator()。
  • 你真的“会”遍历list吗?
  • Java迭代器(Iterator)的使用方法

    千次阅读 2020-08-17 22:59:05
    迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。 Java中的Iterator功能比较简单,并且只能单向...
  • 迭代器就是用来遍历集合中对象的东西,也就是说,对于集合,我们不像对原始数组那样通过直接访问元素来迭代的,而是通过迭代器遍历对象。这么做的好处是将对于集合类型的遍历行为与被遍历集合对象分离,这样以来,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 66,421
精华内容 26,568
关键字:

java迭代器多次遍历

java 订阅