当前位置: 首页 > news >正文

【Java】迭代器的next方法

Collection 集合的遍历

概述:Iteration:迭代器,集合的专用遍历方式

  1. Iterator<E> Iterator() 返回在此 collection 的元素上进行迭代的迭代器
  2. boolean hasNext() 如果返回仍有元素可以迭代,则返回 true
  3. E next() 返回迭代的下一个元素

示例代码:

package com.collection.Demo04;import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;public class Test02 {//迭代器——属于 集合中专有的public static void main(String[] args) {
//        ArrayList<String> arrayList = new ArrayList<String>();Collection<String> collection = new ArrayList<String>();collection.add("mayikt01");collection.add("mayikt02");collection.add("mayikt03");//之前遍历集合中的数据
//        for (int i = 0; i < collection.size(); i++) {
//            String s = collection.get(i);//ArrayList中是有get(),Collection中没有get()
//            System.out.println(s);
//        }//使用迭代器集合遍历System.out.println("使用集合中的专有迭代器遍历数据");//        System.out.println(iterator.next()+","+iterator.hasNext());//mayikt01,true,调用第1次next(),取出第1个元素
//        System.out.println(iterator.next()+","+iterator.hasNext());//mayikt02,true,调用第2次next(),取出第2个元素
//        System.out.println(iterator.next()+","+iterator.hasNext());//mayikt03,false,调用第3次next(),取出第3个元素
//        System.out.println(iterator.next());//没有第4个元素,报错/*** next 底层会使用计数器 每次调用 .next()时 计数+1* iterator.hasNext()* 判断是否可以取出元素,如果可以取出元素 则返回 true 否则 false*/for (String s : collection) {//=>while (iterator.hasNext()){ //如果迭代器 能够获取到元素 返回trueSystem.out.println(s);}}
}

手写Iterator迭代器

MayiktIterator.java 迭代器

package com.collection.Demo04;import java.util.List;/*** 手写Iterator 迭代器* next* hasNext*/
public class MayiktIterator {private final List list;public MayiktIterator(List list) {this.list = list;}//迭代器 计数器 初始值 0private int count = 0;public Object next() {//后面学到泛型是可以优化的if (list == null) {throw new MayiktException("list is null");}if (count >= list.size()) {//说明:集合中 没有继续可以访问到的元素,下标越界了throw new MayiktException("无法继续向下获取元素了");}return list.get(count++);}public boolean hasNext() { //hasNext() 判断集合中 是否可以继续获取元素 如果能够获取到元素 返回true
//        if (count == list.size()){} //取次数==list.size() 集合中个数 相等return count != list.size();}
}

MayiktException.java 异常

package com.collection.Demo04;public class MayiktException extends RuntimeException {public MayiktException(String errorMsg){super(errorMsg);}
}

Test03.java

package com.collection.Demo04;import java.util.ArrayList;
import java.util.List;/*** 手写迭代器测试*/public class Test03 {public static void main(String[] args) {List<String> list = new ArrayList<String>();list.add("mayikt01");list.add("mayikt02");list.add("mayikt03");MayiktIterator mayiktIterator = new MayiktIterator(list);
//        System.out.println(mayiktIterator.next());
//        System.out.println(mayiktIterator.next());
//        System.out.println(mayiktIterator.next());
//        System.out.println(mayiktIterator.next());//报错while (mayiktIterator.hasNext()){System.out.println(mayiktIterator.next());}}
}

ArrayList存入数据保证有序性

package com.collection.Demo04;import java.util.ArrayList;public class Test01 {public static void main(String[] args) {/*** List接口下 实现类 ArrayList LinkedList 存入数据 都是保证有序性* 存入数据可以重复*/ArrayList<String> arrayList = new ArrayList<>();for (int i = 0; i < 10; i++) {arrayList.add("i:" + i);}for (String str : arrayList) {System.out.println(str);//有序性}arrayList.add("数据可以重复");arrayList.add("数据可以重复");arrayList.add("数据可以重复");}
}

下一篇文章:集合中独有的方法

http://www.lryc.cn/news/204552.html

相关文章:

  • java智慧工地云平台源码,以物联网、移动互联网技术为基础,结合大数据、云计算等,实现工程管理绿色化、数字化、精细化、智能化的效果
  • Unity 通过jar包形式接入讯飞星火SDK
  • python轻量规则引擎rule-engine入门与应用实践
  • 栓Q八股文: C++ 14/17 新特性
  • 虚拟世界游戏定制开发:创造独一无二的虚拟体验
  • Tomcat及jdk安装下载及环境配置(超超超详解)
  • 专业安卓实时投屏软件:极限投屏(QtScrcpy作者开发)使用说明
  • C++:二叉搜索树的原理和模拟实现
  • 学习视觉CV Transformer (2)--Transformer原理及代码分析
  • 【AI视野·今日CV 计算机视觉论文速览 第271期】Thu, 19 Oct 2023
  • GoLong的学习之路(四)语法之循环语句
  • 【Lua语法】字符串
  • 程序员节的由来
  • 订水商城H5实战教程-03用户协议
  • 淘宝app商品详情源数据API接口(解决滑块问题)可高并发采集
  • xcode15一直显示正在连接iOS17真机问题解决
  • stm32通过AT指令与esp8622通信
  • Flutter 类似onResume 监听,解决入场动画卡顿
  • 1024勋章
  • C++栈、队列、优先级队列模拟+仿函数
  • ES挂载不上怎么处理?
  • 问题与分类
  • 021-Qt 配置GitHub Copilot
  • 如何使用 PostgreSQL 进行数据迁移和整合?
  • Qt Signals Slots VS QEvents - Qt跨线程异步操作性能测试与选取建议
  • Postgres 和 MySQL 应该怎么选?
  • 【在英伟达nvidia的jetson-orin-nx和PC电脑ubuntu20.04上-装配ESP32开发调试环境-基础测试】
  • 我终于搞明白了HTTPS协议了!超长文章!
  • Golang Testify介绍
  • DALL·E 3怎么用?DALL·E 3如何申请开通 ?DALL·E 3如何免费使用?AI绘画教程来喽~