java迭代器基础知识点总结

在学习集合的时候,我们经常会说把集合里的元素进行遍历,实际上这个过程有一个专门的名称,叫做迭代。迭代器就是对这种遍历进行操作的工具,好处是能够使内部程序的细节得到保密。下面我们就java迭代器的概念、作用进行具体的分析,会结合一些元素、接口的知识点,最后带来使用迭代器的实例。

1.概念

是提供一种方法对一个容器对象中的各个元素进行访问,而又不暴露该对象容器的内部细节。

2.作用

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

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

集合中把这种取元素的方式描述在Iterator接口中。

3.实例

迭代器是java定义的一个接口,在java.util.Iterator包下。该接口有四大方法,便于实现了该接口的集合类进行访问操作。

public interface Iterator<E>
{
E next();
boolean hasNextO;
void remove0;
default void forEachRemaining(Consumer<? super E> action);
}

实例扩展:

public class Demo {

 public static void main(String[] args) {
 ActualContainer container = new ActualContainer();
 for(int i = 5 ; i < 20 ; i++){
 container.add(i);
 }

 Iterator iterator = container.iterator();
 while(iterator.hasNext()){
 System.out.println(iterator.next());
 }
 }
}

/**
 * 迭代器接口,包含有常用的迭代器方法
 */
interface Iterator{
 public boolean hasNext();

 public Object next();
}

/**
 * 容器接口:包含有获取迭代器的方法
 */
interface Container{
 public Iterator iterator();
}

/**
 * 具体实现类
 * @author jiaoyuyu
 *
 */
class ActualContainer implements Container{

 private List<Object> list = new ArrayList<>();

 public void add(Object obj){
 this.list.add(obj);
 }

 public void remove(Object obj){
 this.list.remove(obj);
 }

 public Object get(int index){
 if(index <= (this.list.size() - 1)){
 return this.list.get(index);
 }
 return null;
 }

 public Iterator iterator() {
 return new ActualIterator();
 }

 private class ActualIterator implements Iterator{

 private int pointer = 0;

 public boolean hasNext() {
 return this.pointer < list.size() ? true : false;
 }

 public Object next() {
 if(this.pointer < list.size()){
 Object obj = list.get(pointer);
 pointer++;
 return obj;
 }
 return null;
 }

 }
}

到此这篇关于java迭代器基础知识点总结的文章就介绍到这了,更多相关java迭代器的基本概念内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 一文读懂Java Iterator(迭代器)

    Java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList和HashSet等集合. Iterator 是 Java 迭代器最简单的实现,ListIterator 是 Collection API 中的接口, 它扩展了 Iterator 接口. 迭代器 it 的两个基本操作是 next .hasNext 和 remove. 调用 it.next() 会返回迭代器的下一个元素,并且更新迭代器的状态. 调用 it.hasNext() 用于检测集合中是否

  • java迭代器移除元素出现并发修改异常的原因及解决

    迭代器(Iterator的对象)主要用于遍历集合,体现的就是迭代器模式. Iterator接口定义了以下四种方法. boolean hasNext():如果集合还没遍历完就返回true. Object next():返回集合里的下一个元素. void remove():删除集合里上一次next方法返回的元素. void forEachRemaining(Consumer action):这是java8新增的默认方法,可用Lambda表达式遍历数组. 使用迭代器遍历元素时不能不能通过Collect

  • Java迭代器实现Python中的range代码实例

    如果要想迭代一个类的对象,那么该类必须实现 Iterable 接口,然后通过 iterator 方法返回一个 Iterator 实例. Range 类实现了Python中的range的所有用法,如:range(10),range(5, 10),range(10, 0, -1),range(0, 10, 2) 如果再在 Range 类中定义静态的工厂方法,然后再静态导入工厂方法,就可以更方便地使用了. 使用实例: for (int x : new Range(10, 0, -1)) { Syste

  • Java集合框架迭代器Iterator实现原理解析

    使用循环遍历集合 普通for循环 for(int i=0;i<10;i++){} 增强for循环 for(String str:list){} 什么是迭代器Iterator Iterator是Java中的一个接口,核心作用就是用来遍历容器的元素,当容器实现了Iterator接口后,可以通过调用Iterator()方法获取一个Iterator对象 为啥是调用容器里面的Iterator方法呢? 因为容器的实现有多种,不同的容器遍历规则不一样,比如:ArrayList.LinkedList.HashS

  • java迭代器和for循环优劣详解

    在进行迭代的时候,程序运行的效率也是我们挑选迭代方法的重要原因.目前有三种迭代方法:for循环.迭代器和Foreach.前两者相信大家都非常熟悉,为了更加直观分析效率的不同,我们还加入Foreach一起比较.下面我们就三种方法的概念进行理解,然后ArrayList中探索三种方法的效率. 1.概念理解 for循环:是支持迭代的一种通用结构,是最有效,最灵活的循环结构 迭代器:是通过集合的iterator()方法得到的,所以我们说它是依赖于集合而存在的 Foreach:通过阅读源码我们还发现一个It

  • java迭代器中删除元素的实例操作详解

    我们知道通过Iterator,可以对集合中的元素进行遍历.那么在其中遇到我们不需要的元素时,可不可以在遍历的时候顺便给删除呢?答案是当然可以.在Iterator下有一个remove函数,专门用于删除的操作.下面我们就remove进行讲解,然后对删除元素方法进行说明,最后带来实例的展示. 1.Iterator中的remove void remove():删除迭代器刚越过的元素 从基础集合中移除这个迭代器返回的最后一个元素(可选操作).两个线程中都删除,保证线程的同步. 2.删除元素说明 (1)迭代

  • Java中的迭代器和foreach原理

    迭代器是一种设计模式,它的定义为:提供一种方法访问一个容器对象中的各个元素,而又不需暴露该容器对象的内部细节.迭代器模式,就是为容器而生. 在Java中,Iterator称为迭代器,主要用于遍历 Collection 集合中的元素.Iterator 仅用于遍历集合,Iterator 本身并不提供承装对象的能力.如果需要创建Iterator 对象,则必须有一个被迭代的集合.Collection接口继承了java.lang.Iterable接口,该接口有一个iterator()方法,那么所有实现了C

  • java迭代器基础知识点总结

    在学习集合的时候,我们经常会说把集合里的元素进行遍历,实际上这个过程有一个专门的名称,叫做迭代.迭代器就是对这种遍历进行操作的工具,好处是能够使内部程序的细节得到保密.下面我们就java迭代器的概念.作用进行具体的分析,会结合一些元素.接口的知识点,最后带来使用迭代器的实例. 1.概念 是提供一种方法对一个容器对象中的各个元素进行访问,而又不暴露该对象容器的内部细节. 2.作用 java中提供了很多种集合,它们在存储元素时,采用的存储方式不同.所以当我们要取出这些集合中的元素时,可以通过一种通用

  • java二进制运算基础知识点详解

    一.二进制位运算 1. 按位与(&) 位运算实质是将参与运算的数字转换为二进制,而后逐位对应进行运算. 按位与运算为:两位全为1,结果为1,即1&1=1,1&0=0,0&1=0,0&0=0. 例如51 & 5 -> 00110011 & 00000101 = 00000001 -> 51 & 5 = 1 特殊用法: (1)与0相与可清零. (2)与1相与可保留原值,可从一个数中取某些位.例如需要取10101110中的低四位,101

  • java编译器的基础知识点

    JAVA编译器(javac.exe)的作用是将java源程序编译成中间代码字节码文件,是最基本的开发工具. java程序开发人员,可以的选择集成开发环境IDE(Integrated Development Environment)非常多 编译时首先读入java源程序(即在MS-DOS命令行下键入javac HelloWorld.java等文件名参数和其他选项参数),然后进行语法检查,如果出现问题就终止编译.语法检查通过后,生成中间代码即字节码,字节码文件名和源文件名相同,扩展名为.class.

  • java编译命令基础知识点

    我们在对计算机下达指令时,人类的语言它是不能够明白,需要通过编译的时候翻译成计算机能听懂的语言.编译过程中会调用javac命令,这点大家可能接触的不多,毕竟是是计算机程序内部运行时的操作.下面我们就编译的概念.命令带来讲解,然后分享一个编译实例给大家练习. 1.编译概念 通过流程图可以看出其实java的执行可以分为两大步骤,第一是编译,这一过程就是调用的javac命令,编译成对应的.class文件.第二是解释执行,这一过程是调用的java命令. 2.编译命令 (1)linux rm -rf Ma

  • java的jdk基础知识点总结

    在java开发中,有一个核心的组成部分,我们在进行java安装时,首先下载的就是这个软件,它就是JDK工具包.可以说在范围上是包括了java的其它组成部分,不过还需要我们对这个工具包的使用有深入的了解.下面我们就JDK的概念.组成部分.三种类型.与其他构件区别带来详解. 1.概念 JDK(Java Development Kit)是Java语言的软件开发工具包,主要用于移动设备.嵌入式设备上的Java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行环境(JRE)和JAVA工具.没

  • java向下转型基础知识点及实例

    1.概念 向下转型就是父类对象转成子类对象.我们把一个父类引用 Animal类型的引用 给了一个 Bird类型 的引用,这就是向下转型 2.格式 子类 子类对象=(子类)父类实例 3.注意 向下转型的时候一定要进行强制类型转换 4.实例 class Animal { public String name; public void eat() { System.out.println(this.name + " 正在吃"); } } class Cat extends Animal {

  • java中Class类的基础知识点及实例

    1.说明 Class本身也是一个类. Class对象只能由系统确定. JVM中只有一个Class实例可以加载一个类. Class对应于JVM中加载的.class文件. 每一类的实例都会记住它是由哪个Class例子产生的. 通过Class,可以完全获得一个类中所有加载的结构. Class是Reflection的根源.对于任何你想动态加载和运行的类,只有先获得相应的Class对象. 2.实例 package com.volcano.reflection; import java.lang.annot

  • java局部变量表的基础知识点及实例

    说明 1.局部变量表也叫局部变量数组或本地变量表.定义为一个数组,主要用于存储方法参数和定义方法中的局部变量.这些数据类型包括各种基本数据类型.对象参考和returnAddress类型. 2.因为局部变量表是建立在线程栈上的线程私有数据,所以没有数据安全问题. 实例 private static int count=0; public static void recursion(int a,int b,int c){ long l1=12; short sl=1; byte b1=1; Stri

  • php聚合式迭代器的基础知识点及实例代码

    说明 1.实现其他迭代器功能的接口,相当于在其他迭代器上安装一个外壳,只有一种方法. 2.聚合迭代器可以与许多迭代器结合,实现更高效的迭代. 实例 class MainIterator implements Iterator { private $var = array(); public function __construct($array) //构造函数, 初始化对象数组 { if (is_array($array)) { $this->var = $array; } } public f

随机推荐