集合训话一般有三种:for循环、增强for循环和迭代器。这里主要讲一下for循环和迭代器方法。

1、增强 for循环:

  注意:因为集合不同于数组,集合中元素类型不一定一致,所以需要定义Object类型的变量接收集合中的元素。

  @Testpublic void Testfor() {Collection coll = new ArrayList();coll.add(new Date());coll.add("AA");coll.add(123);coll.add("BB");coll.add(new String("CC"));// 增强for循环for (Object i : coll) {System.out.println(i);}}

2、迭代器:

  注意:迭代器是集合循环中的常用方法。【开始迭代时,可以理解为‘指针’在首个元素上方,所以,首先hasNext()判断下一个元素是否存在,然后用next()输出。

     hasNext():判断是否有下一个元素。

     next():返回下一个元素。

   @Testpublic void TestIterator() {Collection coll = new ArrayList();coll.add(new Date());coll.add("AA");coll.add(123);coll.add("BB");coll.add(new String("CC1"));// 迭代器Iterator i = coll.iterator();while (i.hasNext()) {System.out.println(i.next());}}

3、错误写法:【这种写法时常规遇到的错误写法】

    关于以下代码的解释:首先明白next()的作用,'指针'下移,返回下一个元素。【这里并不实际存在指针的概念,为了加强理解引入C语言中的指针,可以理解为元素下标】

      在while中第一次判断next()是否为空时,实际上此次操作返回new Date()元素,同时 '指针' 从首个元素的最上方移动到new Date() .进入循环后的next()返回第二个元素 'AA',同时 '指针'c从第一个元素移动到第二个元素。

      在while中第二次判断next()是否为空时,实际上此次操作返回 123 元素,同时 '指针' 从第二个元素的最上方移动到 123 .进入循环后的next()返回第四个元素 'BB',同时 '指针'c从第三个元素移动到第四个元素。

      后续元素以此类推。

    输出结果:

    AA

    BB

    抛出异常:

    java.util.NoSuchElementException

总结:1、while条件中的判断并不起到实际作用保证输出有元素。因为判断和输出的不是一个元素。所以导致编译正常,但是实际输出时间隔式的输出。

   2、会出现while判断中的元素时最后一个元素,循环中的输出为为空,抛出异常:java.util.NoSuchElementException。

  @Testpublic void TestNext() {Collection coll = new ArrayList();coll.add(new Date());coll.add("AA");coll.add(123);coll.add("BB");coll.add(new String("CC2"));// 错误写法Iterator i = coll.iterator();while (null != i.next()) {System.out.println(i.next());}}

转载于:https://www.cnblogs.com/honny-seven/p/11332249.html

集合循环的方法和常规错误相关推荐

  1. 【Groovy】集合遍历 ( 使用 for 循环遍历集合 | 使用集合的 each 方法遍历集合 | 集合的 each 方法返回值分析 )

    文章目录 一.使用 for 循环遍历集合 二.使用 each 方法遍历集合 三.集合的 each 方法返回值分析 四.完整代码示例 一.使用 for 循环遍历集合 使用 for 循环 , 遍历集合 , ...

  2. 黑马程序员-----集合框架类(四) 高级for循环、方法的可变参数及静态导入

    ------- android培训.java培训.期待与您交流! ---------- 黑马程序员-----集合框架类(四) 高级for循环.方法的可变参数及静态导入 1.1 高级for循环(示例1) ...

  3. 集合的hashCode方法的最佳实现

    本文翻译自:Best implementation for hashCode method for a collection 我们如何确定最佳的hashCode()方法实现集合(假设equals方法已 ...

  4. 【Groovy】map 集合 ( map 集合遍历 | 使用 map 集合的 each 方法遍历 map 集合 | 代码示例 )

    文章目录 一.使用 map 集合的 each 方法遍历 map 集合 二.代码示例 一.使用 map 集合的 each 方法遍历 map 集合 遍历 map 集合 , 可以调用 map 集合的 eac ...

  5. es6数组初始化_ES6 迭代器(Iterator)和 for...of循环使用方法

    一.什么是迭代器? 生成器 概念在Java,Python等语言中都是具备的,ES6也添加到了JavaScript中.Iterator可以使我们 不需要初始化集合,以及索引的变量 ,而是使用迭代器对象的 ...

  6. 【哈佛商评】关于数据分析,管理者的四个常规错误

    有关数据和数据分析的高谈阔论比比皆是.不断有人告诫各大公司要规划恰当战略来收集分析大数据,并警告不这么做可能带来的不良后果.像<华尔街日报>近日就提到公司享有客户数据这样一个大宝藏,却大都 ...

  7. Python语言学习:解决python版本升级问题集合(python2系列→Python3系列)导致错误的总结集合

    Python语言学习:解决python版本升级问题集合(python2系列→Python3系列)导致错误的总结集合 目录 Python版本升级的原因 Text and binary data in P ...

  8. python异常类型(Exception只是常规错误的基类)

    在用try-except-finally-机制处理异常的时候,一定要注意异常的继承关系. 例如在except中如果有StandardError,那么永远也捕获不到ValueError,因为ValueE ...

  9. 【转载】C#中List集合使用Exists方法判断是否存在符合条件的元素对象

    在C#的List集合操作中,有时候需要根据条件判断List集合中是否存在符合条件的元素对象,此时就可以使用List集合的扩展方法Exists方法来实现,Exists方法的签名为bool Exists( ...

  10. 元组字典集合内置方法与拷贝

    ''' 元组字典集合内置方法与拷贝 ''' # 什么是元组tuple(了解):只可取 不可更改 的列表,元组一创建就被写死了 lt = [1, 2, 3] lt[0] = 2 # 1. 作用:元组一创 ...

最新文章

  1. python之路6-迭代器、生成器、装饰器
  2. 命令行设置Java环境变量
  3. simpledateformat 毫秒_阿里巴巴 | 为啥代码中禁用static修饰SimpleDateFormat?
  4. Vue.js 官方团队成员霍春阳新作,深入解析 Vue.js 设计细节【文末送书】
  5. 西门子s7-200解密软件下载_西门子S7-200/300/400通讯方式汇总,超级全面
  6. service注入为null_如何解决quartz调度时候,job中的service为null的问题?
  7. 碰撞检测技术:kd tree
  8. flume监控一个文件实时采集新增的数据输出到控制台
  9. 互联网创业项目失败的7大特征
  10. java判断一个月间隔_如何检查间隔列表(Joda-Time)是否完全涵盖Java中的一个月
  11. win10添加惠普hp laserjet 1010HB打印机
  12. 数据分析师工作内容 数据分析的六个步骤
  13. 关于java的文件操作
  14. ppt如何替换其他mo ban_有没有一个 PPT 技巧让自己觉得人生都亮了?
  15. 带隔离功能的 高速CAN总线收发器 SIT1050ISODUB8 国产
  16. Web Dynpro for ABAP ( 四 ) BPM系统的连接
  17. 【Java实战小项目】考试系统
  18. matlab程序中ode45,关于matlab中ode45的问题
  19. SDKMAN 安装过程
  20. 大学c语言程序设计听不懂,C语言听不懂?那你还不点进来看看?

热门文章

  1. 亚信联创笔试题,另类创建线程方法
  2. 海岛墓碑 我的26岁女房客-乐瑶同人曲
  3. Qt-登录界面到主界面的跳转
  4. H5-手机APP 接入支付宝、微信、银联支付流程汇总
  5. SensorManager的方向传感器Orientation -- 指南针的简易实现
  6. Linux、Android、uCOS、uCLinux、VxWorks、WinCE等系统比较
  7. 奥运门票预售暂停5天 票务中心向公众致歉
  8. DG参数 LOG_ARCHIVE_DEST_n
  9. 红帽力挺OpenStack
  10. 百度ai ocr 文字识别 安卓SDK导入防坑记