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

Iterator迭代器的使用。

package Day12;/*
 *@author wanghongyuan
 *@Create 2020/12/19 18:48
 java.util.Iterator接口:迭代器(对集合进行遍历)
 有两个常用方法
        boolean hasNext()判断有没有集合中有没有元素可以迭代,有则返回true
        判断集合中还有没有下一个元素,有就返回true,没有就返回false
        E next()返回迭代的下一个元素
        取出集合中的下一个元素
        Iteration迭代器,是一个接口,我们无法直接使用,需要使用Iteration接口的实现类对象,获取实现类对象的方式比较特殊
        在Collection接口中有一个方法,叫iteration();这个方法返回的就是迭代器的实现类对象
            Iterator<> iterator() 返回在此collection的元素进行迭代的迭代器。
        迭代器的使用步骤(重点):
            1.通过Collection中的方法iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态)
            2.使用Iterator接口中的方法,叫hasNext判断有没有下一个元素
            3.使用Iterator接口中的方法Next取出集合中的下一个元素



 */

import java.util.*;

public class Demo01Collection {
    public static void main(String[] args) {
//        Collection<String> coll = new ArrayList<>();
//        Collection<String> coll = new HashSet<>();//无序,里面存储的元素不能重复。
//        Collection<String> coll = new Vector<>();
//        Collection<String> coll = new TreeSet<>();
//        Collection<String> coll = new LinkedHashSet<>();
        Collection<String> coll = new LinkedList<>();
        coll.add("詹姆斯");
        coll.add("科比");
        coll.add("麦迪");
        coll.add("艾弗森");
        coll.add("姚明");
        /*
        *   1.使用集合中的方法iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态)
        * 注意:
        *   Iterator<E> 接口也是有泛型的,迭代器的泛型跟着集合走,集合是什么泛型,迭代器就是什么泛型
        *
        * */
//        多态  接口                实现类对象
        Iterator<String> it = coll.iterator();
        /*
        *   发现使用迭代器取出集合中元素的代码是一个重复的过程
        *   所以我们可以使用循环优化
        *   不知道集合中有多少元素,使用while循环
        *   循环结束的条件,hasNext方法返回false
        *
        * */
        while(it.hasNext()){
            String e = it.next();
            System.out.println(e);
        }
        System.out.println("============");
//             初始化表达式:获取一个迭代器              boolean表达式:判断这个迭代器是否有值;步进表达式可以为空。(原因是next这个即取出元素,也会将指针往后移动一位)
        for (Iterator<String> it2 =coll.iterator();it2.hasNext(); ){
            String e = it2.next();
            System.out.println(e);
            System.out.println("+++++++++++++++++");
        }
        /*
        * 增强for循环
        * 格式:
        *   for(数组或者集合的数据类型 变量名: 数组名/集合名){
        *           System.out.println(变量名);
        *
        * }
        *注意事项:
        *    增强for 循环只能遍历数组或者集合。不能增删改查
        * */


        for (String iter :coll) {
            System.out.println(iter);
        }
        System.out.println("========================");
        int[] arr = {1,2,3,4,5,6};
        for (int i : arr){
            System.out.println(i);
        }

//        String its = it.next();
//        System.out.println(its);
//        it.hasNext();
//        String its1 = it.next();
//        System.out.println(its1);
//        it.hasNext();
//        String its2= it.next();
//        System.out.println(its2);
//        it.hasNext();
//        String its3 = it.next();
//        System.out.println(its3);
//        it.hasNext();
//        String its4 = it.next();
//        System.out.println(its4);
//        it.hasNext();
//        System.out.println(it.hasNext());// false
//        String its5 = it.next();//NoSuchElementException
//        System.out.println(its5);

//        System.out.println(coll);
//        coll.clear();
//        boolean empty = coll.isEmpty();
//        System.out.println(empty);

    }
}

迭代器的使用原理

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java中泛型的概念及使用
  • 常见的数据结构
  • Collection中List的使用及注意事项
  • Collection下的set集合中的hashset方法使用
  • Meterphere安装及使用
  • Collection中set下的Hashset和LinkedHashSet的区别
  • 数据类型中的可变参数理解
  • intelliJ idea酷炫代码特效插件
  • Collections中的三个常用方法,addAll,sort,shuffle
  • Map遍历键值对案例练习
  • Hashtable
  • Map练习,统计输入字符串的个数
  • 斗地主综合案例有序版
  • Throwable中Exception/Error异常的分类及处理
  • 异常处理的过程
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • Create React App 使用
  • Date型的使用
  • IDEA常用插件整理
  • Java小白进阶笔记(3)-初级面向对象
  • Python - 闭包Closure
  • Python十分钟制作属于你自己的个性logo
  • Vue学习第二天
  • Webpack 4 学习01(基础配置)
  • 番外篇1:在Windows环境下安装JDK
  • 计算机常识 - 收藏集 - 掘金
  • 技术发展面试
  • 前端工程化(Gulp、Webpack)-webpack
  • 小试R空间处理新库sf
  • 译有关态射的一切
  • 容器镜像
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • # 飞书APP集成平台-数字化落地
  • #每天一道面试题# 什么是MySQL的回表查询
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (2)(2.10) LTM telemetry
  • (CPU/GPU)粒子继承贴图颜色发射
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (floyd+补集) poj 3275
  • (Git) gitignore基础使用
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (vue)el-tabs选中最后一项后更新数据后无法展开
  • (黑马C++)L06 重载与继承
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (四)JPA - JQPL 实现增删改查
  • (一)SpringBoot3---尚硅谷总结
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .htaccess配置常用技巧
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .NET C# 使用GDAL读取FileGDB要素类
  • .net core使用ef 6
  • .Net 高效开发之不可错过的实用工具
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args