Iterator迭代器与增强for循环

摘要:
获取集合元素的常规方法:在获取元素之前,应首先确定集合中是否有元素。集合在Iterator接口中描述了此方法。集合<//使用迭代器//1进行迭代。获取迭代器对象迭代器&lt//2。(it.hasNext()){int i=it.next();System.out.println(i);无法添加或删除集合中的元素时循环值。

java中提供了很多个集合,它们在存储元素时,采用的存储方式不同。我们要取出这些集合中的元素,可通过一种通用的获取方式来完成。

Collection集合元素的通用获取方式:在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续在判断,如果还有就再取出出来。一直把集合中的所有元素全部取出。这种取出方式专业术语称为迭代。

集合中把这种取元素的方式描述在Iterator接口中。Iterator接口的常用方法如下:

Iterator迭代器与增强for循环第1张

hasNext()方法:用来判断集合中是否有下一个元素可以迭代。如果返回true,说明可以迭代。

next()方法:用来返回迭代的下一个元素,并把指针向后移动一位。

由于Iterator是个接口,不能new对象,因此要用方法来创建对象。

Iterator迭代器与增强for循环第2张

Collection<Integer> col=new ArrayList<Integer>();
        col.add(1);
        col.add(2);
        col.add(3);
        col.add(4);
        //用迭代器进行迭代
        //1.获取迭代器对象
        Iterator<Integer> it=col.iterator();
        //2.循环取值
        while(it.hasNext()){
            int i=it.next();
            System.out.println(i);
        }

注意:在进行集合元素取出时,如果集合中已经没有元素了,还继续使用迭代器的next方法,将会发生java.util.NoSuchElementException没有集合元素的错误。

增强for循环

增强for循环是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的。它的内部原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作。

格式:

for(元素的数据类型 变量 : Collection集合or数组){

}

public static void main(String[] args) {
        Collection<String> col=new ArrayList<String>();
        col.add("你好");
        col.add("圣诞卡节快乐");
        //使用增强for
        for(String str:col){
            System.out.println(str);
        }
        int[] arr={1,3,5,6};
        //使用增强for
        for(int i:arr){
            System.out.println(i);
        }
    }

增强for循环和老式的for循环有什么区别?

注意:新for循环必须有被遍历的目标。目标只能是Collection或者是数组。

建议:遍历数组时,如果仅为遍历,可以使用增强for如果要对数组的元素进行 操作,使用老式for循环可以通过角标操作。

免责声明:文章转载自《Iterator迭代器与增强for循环》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ios图片添加文字或者水印OpenCV_Python —— (6)图像色彩空间下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

webstorm设置新建vue文件的模板

Webstorm 添加新建文件类型 以创建 Vue 文件为例:   File—Setting—Editor—File and Code Template 分支,点击添加,依次输入 Name 和 Extension,OK 即可。如图: Webstorm 创建文件模板   Webstorm 新建文件过程中现在文件头部加入创建时间,作者信息,项目名称,需要用到...

wpf 逻辑树与可视化树

XAML天生就是用来呈现用户界面的,这是由于它具有层次化的特性。在WPF中,用户界面由一个对象树构建而成,这棵树叫作逻辑树。逻辑树的概念很直观,但是为什么要关注它呢?因为几乎WPF的每一方面(属性、事件、资源等)都有与逻辑树相关联的行为。例如,属性值有时会沿着树自动传递给子元素,而触发的事件可以自底向上或自顶向下遍历树。 与逻辑树类似的一个概念是可视树。可...

linux/windows 双平台csv文件生成方法

逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。 1、linux/windows 可移植 #include <stdio.h> int main() { FILE *fp; char const *fileTit...

WPF 之 自定义Shape

AMindMap需要一个Line,用以连接父ANode和子ANode, 简单说,就是一头大一头小的线,Wpf自带的Line是没这个功能。 Path可以画,不过,我的想法仍旧是绑定。那只能自己做咯。 图例 正文 既然Line,Rectangle等都是继承自Shape的,直接新建一个类继承自Sharp. 1 Public Class ALine 2...

div包裹页面后多余部分没有显示,也没滚动条 overflow 属性设置

今天弄个div套着一个页面结果那个页面超出范围后页面没有滚动条可以滚动浏览下面的内容,原来是设置了overflow的hidden属性 visible 默认值。内容不会被修剪,会呈现在元素框之外。 hidden 内容会被修剪,并且其余内容是不可见的。 scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。 auto 如果内容被...

对B+树,B树,红黑树的理解

 出处:https://www.jianshu.com/p/86a1fd2d7406 写在前面,好像不同的教材对b树,b-树的定义不一样。我就不纠结这个到底是叫b-树还是b-树了。 如图所示,区别有以下两点: B+树中只有叶子节点会带有指向记录的指针,而B树则所有节点都带有,在内部节点出现的索引项不会再出现在叶子节点中。 B+树中所有叶子节点都是通...