• 【Java】迭代器的next方法


    Collection 集合的遍历

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

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

    示例代码:

    1. package com.collection.Demo04;
    2. import java.util.ArrayList;
    3. import java.util.Collection;
    4. import java.util.Iterator;
    5. public class Test02 {
    6. //迭代器——属于 集合中专有的
    7. public static void main(String[] args) {
    8. // ArrayList arrayList = new ArrayList();
    9. Collection collection = new ArrayList();
    10. collection.add("mayikt01");
    11. collection.add("mayikt02");
    12. collection.add("mayikt03");
    13. //之前遍历集合中的数据
    14. // for (int i = 0; i < collection.size(); i++) {
    15. // String s = collection.get(i);//ArrayList中是有get(),Collection中没有get()
    16. // System.out.println(s);
    17. // }
    18. //使用迭代器集合遍历
    19. System.out.println("使用集合中的专有迭代器遍历数据");
    20. // System.out.println(iterator.next()+","+iterator.hasNext());//mayikt01,true,调用第1次next(),取出第1个元素
    21. // System.out.println(iterator.next()+","+iterator.hasNext());//mayikt02,true,调用第2次next(),取出第2个元素
    22. // System.out.println(iterator.next()+","+iterator.hasNext());//mayikt03,false,调用第3次next(),取出第3个元素
    23. // System.out.println(iterator.next());//没有第4个元素,报错
    24. /**
    25. * next 底层会使用计数器 每次调用 .next()时 计数+1
    26. * iterator.hasNext()
    27. * 判断是否可以取出元素,如果可以取出元素 则返回 true 否则 false
    28. */
    29. for (String s : collection) {//=>while (iterator.hasNext()){ //如果迭代器 能够获取到元素 返回true
    30. System.out.println(s);
    31. }
    32. }
    33. }

    手写Iterator迭代器

    MayiktIterator.java 迭代器

    1. package com.collection.Demo04;
    2. import java.util.List;
    3. /**
    4. * 手写Iterator 迭代器
    5. * next
    6. * hasNext
    7. */
    8. public class MayiktIterator {
    9. private final List list;
    10. public MayiktIterator(List list) {
    11. this.list = list;
    12. }
    13. //迭代器 计数器 初始值 0
    14. private int count = 0;
    15. public Object next() {//后面学到泛型是可以优化的
    16. if (list == null) {
    17. throw new MayiktException("list is null");
    18. }
    19. if (count >= list.size()) {
    20. //说明:集合中 没有继续可以访问到的元素,下标越界了
    21. throw new MayiktException("无法继续向下获取元素了");
    22. }
    23. return list.get(count++);
    24. }
    25. public boolean hasNext() { //hasNext() 判断集合中 是否可以继续获取元素 如果能够获取到元素 返回true
    26. // if (count == list.size()){} //取次数==list.size() 集合中个数 相等
    27. return count != list.size();
    28. }
    29. }

    MayiktException.java 异常

    1. package com.collection.Demo04;
    2. public class MayiktException extends RuntimeException {
    3. public MayiktException(String errorMsg){
    4. super(errorMsg);
    5. }
    6. }

    Test03.java

    1. package com.collection.Demo04;
    2. import java.util.ArrayList;
    3. import java.util.List;
    4. /**
    5. * 手写迭代器测试
    6. */
    7. public class Test03 {
    8. public static void main(String[] args) {
    9. List list = new ArrayList();
    10. list.add("mayikt01");
    11. list.add("mayikt02");
    12. list.add("mayikt03");
    13. MayiktIterator mayiktIterator = new MayiktIterator(list);
    14. // System.out.println(mayiktIterator.next());
    15. // System.out.println(mayiktIterator.next());
    16. // System.out.println(mayiktIterator.next());
    17. // System.out.println(mayiktIterator.next());//报错
    18. while (mayiktIterator.hasNext()){
    19. System.out.println(mayiktIterator.next());
    20. }
    21. }
    22. }

    ArrayList存入数据保证有序性

    1. package com.collection.Demo04;
    2. import java.util.ArrayList;
    3. public class Test01 {
    4. public static void main(String[] args) {
    5. /**
    6. * List接口下 实现类 ArrayList LinkedList 存入数据 都是保证有序性
    7. * 存入数据可以重复
    8. */
    9. ArrayList arrayList = new ArrayList<>();
    10. for (int i = 0; i < 10; i++) {
    11. arrayList.add("i:" + i);
    12. }
    13. for (String str : arrayList) {
    14. System.out.println(str);//有序性
    15. }
    16. arrayList.add("数据可以重复");
    17. arrayList.add("数据可以重复");
    18. arrayList.add("数据可以重复");
    19. }
    20. }

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

  • 相关阅读:
    Android基础第八天 | 字节跳动第四届青训营笔记
    数据挖掘——机器学习
    C# 滑动验证码|拼图验证|SlideCaptcha
    机器学习实验------密度聚类方法之DB-Scan
    ABAP 辨析ON INPUT|REQUEST|CHAIN-INPUT|CHAIN-REQUEST
    .net 温故知新:【10】.NET ORM框架EFCore使用入门之CodeFirs、DBFirst
    CUDA编程学习(1)
    微信、支付宝、携程等多款app任意文件读取漏洞
    8000字讲透OBSA原理与应用实践
    证件照素材大合集(全网最全版本),满足证件照的一切需求!
  • 原文地址:https://blog.csdn.net/qq_57268251/article/details/133953340