广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >如何实现java中的迭代器功能
  • 770
分享到

如何实现java中的迭代器功能

2024-04-02 19:04:59 770人浏览 安东尼
摘要

这篇“如何实现java中的迭代器功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何实现

这篇“如何实现java中的迭代器功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何实现java中的迭代器功能”文章吧。

两行代码

 List<String> list=new ArrayList<>(2);
        list.add("java");
        list.add("C#");
        Iterator<String> iterator=list.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }

上面的代码是java中很常见的一个迭代的功能。
于是自己也想要写一个泛型类,然后支持这种迭代的功能。
于是乎写了一个类似ArrayList的动态数组功能。

package a;

import javax.swing.text.html.HTMLDocument;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;

public class Gys<T>{
    private final  static int default_capacity =10;
    private int endIndex =0;
    private Object[] elemts;

    public Gys() {
        this.elemts = new Object[default_capacity];
    }

    public T[] add(T t){
        if(elemts.length-1< endIndex){
            int newCapcti= default_capacity *2;
            elemts= Arrays.copyOf(elemts,newCapcti);
        }
        elemts[endIndex++]=t;
        return (T[])elemts;
    }

    public int size(){
        return endIndex;
    }

    public T get(int i){
        if(i< endIndex){
            return (T) elemts[i];
        }
        throw new RuntimeException("索引超出界限");
    }


    public static void main(String[] args) {
        Gys<Integer> gys=new Gys<>();
        gys.add(5);
        gys.add(45);
        System.out.println(gys.get(0));
        System.out.println(gys.get(1));        
    }
}

上面的代码怎么都没办法实现Iterator的功能,在idea下怎么都点不出来Iterator的提示;
于是只能去翻阅jdk原码。在ArrayList中看到如下的代码。

如何实现java中的迭代器功能

在ArrayList中申明一个内部类Itr,并且继承Iterator<E>这个接口,然后实现hasNext()和next()方法。
在定义一个方法专门获取迭代器实例。
public Iterator<E> iterator() { return new Itr(); }
这才明白如何实现迭代器功能。

所以对上面的泛型代码进行改造。

package a;

import java.util.Arrays;
import java.util.Iterator;

public class Gys<T>{
    private final  static int default_capacity =10;
    private int endIndex =0;
    private Object[] elemts;

    public Gys() {
        this.elemts = new Object[default_capacity];
    }

    public T[] add(T t){
        if(elemts.length-1< endIndex){
            int newCapcti= default_capacity *2;
            elemts= Arrays.copyOf(elemts,newCapcti);
        }
        elemts[endIndex++]=t;
        return (T[])elemts;
    }

    public int size(){
        return endIndex;
    }

    class Itr implements Iterator<T>{

        private int point;
        private int len;

        public Itr() {
            this.point=0;
            this.len=endIndex;
        }

        @Override
        public boolean hasNext() {
            return point<endIndex?true:false;
        }

        @Override
        public T next() {
            return (T) elemts[point++];
        }
    }

    public Iterator<T> iterator(){
        return new Itr();
    } 

   public T get(int i){
        if(i< endIndex){
            return (T) elemts[i];
        }
        throw new RuntimeException("索引超出界限");
    }


    public static void main(String[] args) {
        Gys<Integer> gys=new Gys<>();
        gys.add(5);
        gys.add(45);
        
        Iterator iterator= gys.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }
}

怎么样、这个时候就可以对自己的泛型类Gys实现迭代器的功能了。
同时另一个疑问也来了,和Iterator长得异常相似的接口Iterable是干什么的?他和Iterator又是什么关系?
开源码看看。

 如何实现java中的迭代器功能

源码中可以看出Iterable接口提供了一个获取迭代器的接口方法。那么又有哪些类实现了接口呢?
使用idea的ctrl+h快捷键调出查看类的全部继承关系。

如何实现java中的迭代器功能

如何实现java中的迭代器功能

  我们看到熟悉的Collection接口。

看到Colllection接口中并没有实现这个接口,依然是一个接口方法。继续向下追踪

如何实现java中的迭代器功能

 看到我们熟悉的ArrayList这个类型实现了iterator方法。
从这个角度来看ArrayList中的iterator()方法不是空穴来风的,他是通过继承collection和Iterable这些接口而来的。
虽然我们上面的泛型类实现了迭代的功能,但是学习了新知识后总要练练手,于是这个时候画蛇添足的对上面的代码继续改造。

package a;

import java.util.Arrays;
import java.util.Iterator;

public class Gys<T> implements Iterable<T>{
    private final  static int default_capacity =10;
    private int endIndex =0;
    private Object[] elemts;

    public Gys() {
        this.elemts = new Object[default_capacity];
    }

    public T[] add(T t){
        if(elemts.length-1< endIndex){
            int newCapcti= default_capacity *2;
            elemts= Arrays.copyOf(elemts,newCapcti);
        }
        elemts[endIndex++]=t;
        return (T[])elemts;
    }

    public int size(){
        return endIndex;
    }

    class Itr implements Iterator<T>{

        private int point;
        private int len;

        public Itr() {
            this.point=0;
            this.len=endIndex;
        }

        @Override
        public boolean hasNext() {
            return point<endIndex?true:false;
        }

        @Override
        public T next() {
            return (T) elemts[point++];
        }
    }    
   @Override
    public Iterator<T> iterator(){
        return new Itr();
    }


    public T get(int i){
        if(i< endIndex){
            return (T) elemts[i];
        }
        throw new RuntimeException("索引超出界限");
    }


    public static void main(String[] args) {
        Gys<Integer> gys=new Gys<>();
        gys.add(5);
        gys.add(45);
        
        Iterator iterator= gys.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }
}

以上就是关于“如何实现java中的迭代器功能”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网node.js频道。

--结束END--

本文标题: 如何实现java中的迭代器功能

本文链接: https://www.lsjlt.com/news/91436.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何实现java中的迭代器功能
    这篇“如何实现java中的迭代器功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何实现...
    99+
    2022-10-19
  • java如何实现迭代器模式
    这篇文章主要介绍java如何实现迭代器模式,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!定义:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。类型:行为类模式类图:如果要问java中使用最多的一种...
    99+
    2023-05-30
    java
  • ES6中如何实现迭代器
    这篇文章将为大家详细讲解有关ES6中如何实现迭代器,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。迭代器(Iterator)迭代器是一种接口,为各种不同的数据结构提供统一的...
    99+
    2022-10-19
  • 迭代器模式如何在java项目中实现
    迭代器模式如何在java项目中实现 ?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。java 迭代器模式实例详解首先,为什么使用迭代器模式,目的就是通过一个通用的迭代方法,隐...
    99+
    2023-05-31
    java 迭代器模式 ava
  • Python中的迭代器是如何实现的?
    Python中的迭代器是如何实现的?迭代器是Python中非常重要的一个概念,它可以让我们方便地对集合中的元素进行遍历和访问。在Python中,几乎所有可迭代的对象,比如列表、元组、字典和集合等,都可以通过迭代器来进行遍历。那么迭代器是如何...
    99+
    2023-10-25
    Python 实现 (Implementation) 迭代器 (Iterator)
  • java迭代器实现的原理是什么
    Java迭代器的实现原理是基于设计模式中的迭代器模式。迭代器模式是一种行为型模式,它提供了一种方法来顺序访问一个聚合对象中的元素,而...
    99+
    2023-10-10
    java
  • java 中ArrayList迭代的两种实现方法
    java 中ArrayList迭代的两种实现方法Iterator与for语句的结合来实现,代码很简单,大家参考下。实现代码:package cn.us; import java.util.ArrayList; import java.uti...
    99+
    2023-05-31
    java arraylist 迭代
  • python如何实现迭代器切片
    这篇文章给大家分享的是有关python如何实现迭代器切片的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。迭代器切片如果您尝试获取迭代器的切片,系统会报 TypeError,提示生成...
    99+
    2022-10-19
  • C#如何实现迭代器方法
    这篇文章主要介绍C#如何实现迭代器方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.迭代器方法可以使用foreach循环语句进行的迭代的方法,称为可迭代方法,或者迭代器方法。迭代器用法法介绍。  迭代器用于依次返...
    99+
    2023-06-29
  • JavaScript中如何实现数组迭代
    这篇文章主要为大家展示了“JavaScript中如何实现数组迭代”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript中如何实现数组迭代”这篇文章吧...
    99+
    2022-10-19
  • python如何实现可链接迭代器
    小编给大家分享一下python如何实现可链接迭代器,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!可链接迭代器>>&g...
    99+
    2022-10-19
  • STL组件之迭代器如何实现
    小编给大家分享一下STL组件之迭代器如何实现,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但这种...
    99+
    2023-06-17
  • 如何在java项目中使用迭代器
    如何在java项目中使用迭代器?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 迭代器模式将一个集合给封装起来,主要是为用户提供了一种遍历其内部元素的方式。迭代器模式有...
    99+
    2023-05-31
    java 迭代器 ava
  • Iterator迭代器如何在Java项目中使用
    Iterator迭代器如何在Java项目中使用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。什么是迭代器  在Java中,有很多的数据容器,对于这些的操作有很多的共性。Java...
    99+
    2023-05-31
    java iterator ava
  • Java中如何实现重定向功能?
    在Web应用程序中,重定向功能是非常重要的。重定向可以让用户在不同的页面之间进行跳转,同时也可以让Web应用程序更加灵活和易于维护。Java提供了一些方法来实现重定向功能,这篇文章将介绍如何使用Java实现重定向功能。 重定向是什么? 在...
    99+
    2023-06-02
    重定向 spring numy
  • java如何实现小说阅读器功能
    要实现一个基本的小说阅读器功能,可以考虑以下步骤:1. 创建一个图形界面,可以使用Java Swing或JavaFX来实现。界面可以...
    99+
    2023-08-25
    java
  • pandas.DataFrame的for循环迭代如何实现
    本篇内容主要讲解“pandas.DataFrame的for循环迭代如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“pandas.DataFrame的for循环迭代如何实现”吧!当使用for...
    99+
    2023-07-05
  • python中实现迭代器(iterator)的方法示例
    概述 迭代器是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。 延迟计算或惰性求值 (Lazy evaluation) 迭代器不要求你事先准...
    99+
    2022-06-04
    示例 迭代 方法
  • java查找功能如何实现
    在Java中实现查找功能可以利用循环和条件判断来遍历数据并进行比较。下面是一个示例代码,演示如何在一个整数数组中查找指定的数字并返回...
    99+
    2023-09-26
    java
  • java如何实现定位功能
    Java可以通过使用GPS或Wi-Fi来实现定位功能。以下是几种实现定位功能的方法:1. 使用GPS:Java可以通过调用系统的GP...
    99+
    2023-09-21
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作