JAVA Iterator接口与增强for循环的实现

1 Iterator迭代器

1.1 Iterator接口

  1. java.util.Iterator接口也是Java集合中的一员;
  2. Iterator主要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象也被称为迭代器。
  3. public Iterator iterator(): 获取集合对应的迭代器,用来遍历集合中的元素。

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

1.2 Iterator接口常用方法

  • public boolean hasNext():如果下一个元素存在,返回 true,否则false;
  • public E next():返回下一个元素。

1.3 案例演示

public class Demo {
  public static void main(String[] args) {
    // 使用多态方式创建对象
    Collection<String> sg = new ArrayList<String>();

    // 添加元素到集合
    sg.add("刘备");
    sg.add("关羽");
    sg.add("张飞");

    //使用迭代器进行遍历
    Iterator<String> it = sg.iterator();
    while(it.hasNext()){
      String s = it.next();
      System.out.println(s);
    }
  }
}

刘备
关羽
张飞

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

1.2 迭代器的实现原理

Iterator迭代器对象在遍历集合时,内部采用指针的方式来跟踪集合中的元素。
在调用Iterator的next方法之前,迭代器的索引位于第一个元素之前,不指向任何元素,当第一次调用迭代器的next方法后,迭代器的索引会向后移动一位,指向第一个元素并将该元素返回,当再次调用next方法时,迭代器的索引会指向第二个元素并将该元素返回,依此类推,直到hasNext方法返回false,表示到达了集合的末尾,终止对元素的遍历。

2 增强for循环

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

格式:

for(元素的数据类型 变量 : Collection集合or数组){
  //写操作代码
}

示例1:遍历数组

public class Demo {
  public static void main(String[] args) {
 int[] arr = {3,5,6,87};
    //使用增强for遍历数组
 for(int a : arr){//a代表数组中的每个元素
  System.out.println(a);
 }
 }
}

3
5
6
87

示例2:遍历集合

public class Demo {
  public static void main(String[] args) {
    Collection<String> sg = new ArrayList<String>();
    sg.add("刘备");
    sg.add("关羽");
    sg.add("张飞");
    //使用增强for遍历
    for(String s :sg){//接收变量s代表 代表被遍历到的集合元素
      System.out.println(s);
    }
  }
}

刘备
关羽
张飞

到此这篇关于JAVA Iterator接口与增强for循环的实现的文章就介绍到这了,更多相关JAVA Iterator接口与增强for循环内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java中增强for循环的实现原理和坑详解

    前言 引入增强for循环的原因:在JDK5以前的版本中,遍历数组或集合中的元素,需要先获得数组的长度或集合的迭代器,比较麻烦. JDK5中定义了一种新的语法----增强for循环,以简化此类操作.增强for循环只能用在数组或实现Iterable接口的集合上. 语法格式: for(变量类型 变量:需迭代的数组或集合){ } 在JAVA中,遍历集合和数组一般有以下三种形式: for (int i = 0; i < list.size(); i++) { System.out.print(list.g

  • Java Iterator接口遍历单列集合迭代器原理详解

    这篇文章主要介绍了Java Iterator接口遍历单列集合迭代器原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Iterator接口概述 在程序开发中,经常需要遍历集合中的所有元素.针对这种需求,JDK专门提供了一个接口java.util.Iterator . Iterator 接口也是Java集合中的一员,但它与 Collection . Map 接口有所不同,Collection 接口与 Map 接口主要用于存储元素,而 Iter

  • java Iterator接口和LIstIterator接口分析

    java  Iterator接口和LIstIterator接口分析 目录 1.Iterator接口 2.ListIterator 3.Iterator和ListIterator的区别 正文 在继续看ArrayList源码之前,先了解Iterator接口和ListIterator接口,下篇文章详细讲解ArrayList是如何实现它们的. 我们知道,接口只是一种规范,当继承接口并实现其中的方法时,要遵循接口对方法的说明. 1.Iterator接口 Iterator接口取代了Java集合框架中的Enu

  • Java中增强for循环在一维数组和二维数组中的使用方法

    一维数组: int[] a={1,2,3}; for(int i:a) { System.out.print(i+" "); } 输出:1 2 3 二维数组: import java.util.Scanner; public class tet { public static void main(String[] args) { //int[][] b={{1,2,3},{4,5,6}};行 int[][] a=new int[5][];//必须明确行数 for(int i=0;i&l

  • java增强for循环的实现方法

    如下所示: package cn.jdk.foreach; import java.util.HashMap; import java.util.Map; public class ForEachTest { public static void main(String[] args) { int[] arr = {1,2,3}; for(int a:arr){ System.out.println(a+"\t"); } System.out.println("=======

  • Java中使用增强for循环的实例方法

    增强型for循环在遍历一个数组的时候会更加快捷 步骤  : 增强型for循环 注:增强型for循环只能用来取值,却不能用来修改数组里的值 public class HelloWorld { public static void main(String[] args) { int values [] = new int[]{18,62,68,82,65,9}; //常规遍历 for (int i = 0; i < values.length; i++) { int each = values[i]

  • Java Iterator接口实现代码解析

    Iterator接口 源代码 package java.util; import java.util.function.Consumer; /** * An iterator over a collection. {@code Iterator} takes the place of * {@link Enumeration} in the Java Collections Framework. Iterators * differ from enumerations in two ways:

  • JAVA Iterator接口与增强for循环的实现

    1 Iterator迭代器 1.1 Iterator接口 java.util.Iterator接口也是Java集合中的一员: Iterator主要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象也被称为迭代器. public Iterator iterator(): 获取集合对应的迭代器,用来遍历集合中的元素. 迭代:Collection集合元素的通用获取方式.在取元素之前先判断集合中有没有元素.如果有,就把这个元素取出来:继续判断,如果还有就再取出来:就这样一直把集

  • ES6 Iterator接口和for...of循环用法分析

    本文实例讲述了ES6 Iterator接口和for...of循环用法.分享给大家供大家参考,具体如下: <script> // 数组已经帮我们内置这个Iterator接口 let arr = ['hello','world']; let map = arr[Symbol.iterator](); // 数组直接调用iterator接口,返回一个对象map console.log(map.next()); // {value: "hello", done: false} do

  • java  Iterator接口和LIstIterator接口分析

    java  Iterator接口和LIstIterator接口分析 目录 1.Iterator接口 2.ListIterator 3.Iterator和ListIterator的区别 正文 在继续看ArrayList源码之前,先了解Iterator接口和ListIterator接口,下篇文章详细讲解ArrayList是如何实现它们的. 我们知道,接口只是一种规范,当继承接口并实现其中的方法时,要遵循接口对方法的说明. 1.Iterator接口 Iterator接口取代了Java集合框架中的Enu

  • Java List接口与Iterator接口及foreach循环使用解析

    目录 List接口 ArrayList集合 LinkedList集合 Iterator接口 foreach循环 List接口 List接口继承Collection接口,属于单列集合,在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中通过索引来访问集合中的指定元素,元素是顺序存储的,即元素的存入顺序和取出顺序一致. ArrayList集合 ArrayList是List接口的一个实现类,在ArrayList内部封装了一个长度可变的数组对象. package 集合类;

  • 详解Java中list,set,map的遍历与增强for循环

    详解Java中list,set,map的遍历与增强for循环 Java集合类可分为三大块,分别是从Collection接口延伸出的List.Set和以键值对形式作存储的Map类型集合. 关于增强for循环,需要注意的是,使用增强for循环无法访问数组下标值,对于集合的遍历其内部采用的也是Iterator的相关方法.如果只做简单遍历读取,增强for循环确实减轻不少的代码量. 集合概念: 1.作用:用于存放对象 2.相当于一个容器,里面包含着一组对象,其中的每个对象作为集合的一个元素出现 3.jav

  • 详谈Java枚举、静态导入、自动拆装箱、增强for循环、可变参数

    一.枚举简介 1.什么是枚举? 需要在一定范围内取值,这个值只能是这个范围内中的任意一个 现实场景:交通信号灯,有三种颜色,但是每次只能亮三种颜色里面的任意一个 2.使用一个关键字 enum enum Color3 { RED,GREEN,YELLOW; } *枚举的构造方法也是私有化的 *特殊枚举的操作 **在枚举类里面有构造方法 **在构造方法里面有参数,需要在每个实例上都写参数 **在枚举类里面有抽象方法 **在枚举的每个实例里面都重写这个抽象方法 3.枚举的api的操作 **name()

随机推荐