Iterator(迭代器)的使用

您所在的位置:网站首页 java迭代器iterator用快捷键怎么打开 Iterator(迭代器)的使用

Iterator(迭代器)的使用

2023-12-17 02:18| 来源: 网络整理| 查看: 265

  迭代对于我们搞Java的来说绝对不陌生。我们常常使用JDK提供的迭代接口进行Java集合的迭代。 

[java] view plain copy  print? Iterator iterator = list.iterator();           while(iterator.hasNext()){               String string = iterator.next();               //do something           }  

        迭代其实我们可以简单地理解为遍历,是一个标准化遍历各类容器里面的所有对象的方法类,它是一个很典型的设计模式。Iterator模式是用于遍历集合类的标准访问方法。它可以把访问逻辑从不同类型的集合类中抽象出来,从而避免向客户端暴露集合的内部结构。 在没有迭代器时我们都是这么进行处理的。如下:

        对于数组我们是使用下标来进行处理的: 

[java] view plain copy  print? int[] arrays = new int[10];   for(int i = 0 ; i = elementData.length)                   throw new ConcurrentModificationException();               cursor = i + 1;      //cursor + 1               return (E) elementData[lastRet = i];  //lastRet + 1 且返回cursor处元素           }   

        checkForComodification()主要用来判断集合的修改次数是否合法,即用来判断遍历过程中集合是否被修改过。在java提高篇(二一)-----ArrayList中已经阐述了。modCount用于记录ArrayList集合的修改次数,初始化为0,,每当集合被修改一次(结构上面的修改,内部update不算),如add、remove等方法,modCount + 1,所以如果modCount不变,则表示集合内容没有被修改。该机制主要是用于实现ArrayList集合的快速失败机制,在Java的集合中,较大一部分集合是存在快速失败机制的,这里就不多说,后面会讲到。所以要保证在遍历过程中不出错误,我们就应该保证在遍历过程中不会对集合产生结构上的修改(当然remove方法除外),出现了异常错误,我们就应该认真检查程序是否出错而不是catch后不做处理。 

[java] view plain copy  print? final void checkForComodification() {        if (modCount != expectedModCount)            throw new ConcurrentModificationException();    }   

        对于remove()方法的是实现,它是调用ArrayList本身的remove()方法删除lastRet位置元素,然后修改modCount即可。 

[java] view plain copy  print? public void remove() {               if (lastRet 


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3