一:ArraryList  最终继承超级接口Collection,Colection接口继承Iterator接口。

public interface Collection<E>
extends Iterable<E>

而Iterator只有一个方法:

Iterator<T> iterator()

在ArraryList实现类中有对方法的重写,返回当前实现类的迭代器对象(Returns an iterator over a set of elements of type T.)。

 1 package test08;
 2
 3 import java.util.ArrayList;
 4 import java.util.Collection;
 5 import java.util.Iterator;
 6
 7 public class iter_demo {
 8     public  static void  main(String...args){
 9         iter_test();
10
11     }
12     public static  void iter_test(){
13         Collection<Integer> in_ar=new ArrayList<Integer>();
14         in_ar.add(11);
15         in_ar.add(11);
16         in_ar.add(11);
17         in_ar.add(11);
18         Iterator<Integer> in_it=in_ar.iterator();
19         while (in_it.hasNext()){
20             System.out.print(in_it.next());
21         }
22     }
23 }

其中:hasNnext()判断迭代器中是否还有下一个数组元素。

next()表示获取下个数组元素。

迭代器实现原理类似内存指针,hasNext每次判断下个元素是否为空,即指针指向下个元素,有就返回true否则返回false。

二、增强for

语法: for(type  变量:可迭代的对象){

      代码块

    }

增强for虽然能减少代码的量,但是弊端也明显,无法操作索引。

上面例子不采用迭代器:

 1 package test08;
 2
 3 import java.util.ArrayList;
 4 import java.util.Collection;
 5 import java.util.Iterator;
 6
 7 public class iter_demo {
 8     public  static void  main(String...args){
 9         iter_test();
10
11     }
12     public static  void iter_test(){
13         Collection<Integer> in_ar=new ArrayList<Integer>();
14         in_ar.add(11);
15         in_ar.add(11);
16         in_ar.add(11);
17         in_ar.add(11);
18         for(Integer i:in_ar){
19             System.out.print(i);
20         }
21     }
22 }

如果想要操作索引,还得使用传统的for。

 1 package test08;
 2
 3 import java.util.ArrayList;
 4 import java.util.Collection;
 5 import java.util.Iterator;
 6
 7 public class iter_demo {
 8     public  static void  main(String...args){
 9         iter_test();
10
11     }
12     public static  void iter_test(){
13         Collection<Integer> in_ar=new ArrayList<Integer>();
14         in_ar.add(11);
15         in_ar.add(11);
16         in_ar.add(11);
17         in_ar.add(11);
18         for(Integer i=0;i<in_ar.size();i++){
19             ArrayList<Integer> in_ar_new=(ArrayList<Integer>) in_ar;
20             System.out.print(in_ar_new.get(i));
21         }
22     }
23 }

转载于:https://www.cnblogs.com/evilliu/p/7837742.html

java集合---迭代器iterator相关推荐

  1. Java集合迭代器原理图解_Java Iterator接口遍历单列集合迭代器原理详解

    这篇文章主要介绍了Java Iterator接口遍历单列集合迭代器原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Iterator接口概述 ...

  2. java集合迭代器_java集合迭代器

    一.Java中有一个设计模式是迭代器模式 1.迭代器模式定义 迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示. 2.迭代器模式概述 Java集 ...

  3. Java的迭代器—— Iterator

    定义 Java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList 和 HashSet 等集合. 创建方式 创建一个集合如 ArrayList 或Has ...

  4. java 集合迭代器_Java中的集合迭代器

    集合的迭代器 任何集合都有迭代器. 任何集合类,都必须能以某种方式存取元素,否则这个集合容器就没有任何意义. 迭代器,也是一种模式(也叫迭代器模式).在java中它是一个对象,其目的是遍历并选中其中的 ...

  5. java之迭代器Iterator基本使用

    java.util.Iterotor接口:迭代器(对集合进行遍历) 两个常用方法: boolean hasNext() : 如果仍有元素可以迭代,则返回true. 判断集合中还有没有下一个元素,有就返 ...

  6. java集合迭代器使用

    遍历集合的方式有以下几种: 1.Iterator 2.ListIterator 3.Enumeration 4.foreach 其中Iterator的使用率最高,foreach其次. 1.8版本for ...

  7. java for 迭代器_Java基础-迭代器Iterator与语法糖for-each

    迭代器Iterator与语法糖for-each 一.为什么需要迭代器 设计模式迭代器 迭代器作用于集合,是用来遍历集合元素的对象.迭代器不是Java独有的,大部分高级语言都提供了迭代器来遍历集合.实际 ...

  8. Java迭代器iterator遍历有条件删除对象

    Java迭代器iterator遍历有条件删除对象 在使用迭代器遍历对象并对对象使用删除操作时可能发生的问题指南 文章目录 Java迭代器iterator遍历有条件删除对象 前言 总结 前言 前不久在使 ...

  9. Java迭代器(Iterator)的next()及hasNext方法的理解

    关于java集合迭代器中的it.hashNext()和it.next()方法 今天突然想了一下找个问题,网上大多数说是直接取下一个元素,很迷惑,那么迭代器中it.next()方法到底是取当前元素并且指 ...

最新文章

  1. Laravel5中Cookie的使用
  2. 安卓天天练练(十一)用list绑数据
  3. 【原】HTML页面元素加载顺序研究报告(2)----背景图片
  4. DataScience:初学者进阶数学处理专家,学会Excel中50个常用功能带你飞
  5. MiniGUI细节处理(转)
  6. C语言之加入头文件<stdbool.h>可以使用true和false
  7. mybatis报错(三)报错Result Maps collection does not contain value for java.lang.Integer解决方法...
  8. 特征工程之自动特征生成(自动特征衍生)工具Featuretools——深度特征合成
  9. C语言文件的随机读写
  10. jquery常见插件用法表
  11. matlab电气常用工具箱,matlab电气工具箱实验指导书
  12. SpringBoot+SpringAOP+Java自定义注解+mybatis实现切库读写分离
  13. 计算机操作系统复习题
  14. html超链接下划线改虚线_怎么把下划线变成虚线
  15. 浅谈智能客服机器人的产品设计
  16. Py之lime:lime库的简介、安装、使用方法之详细攻略
  17. java实现仓储选址_邮局选址问题 (Java代码)并不难
  18. leetcode-167-两数之和 II
  19. python有哪些模块安全方向_Python 常用模块
  20. nexus7二代升级android8,添横屏模式 Nexus7升级至Android4.1.2

热门文章

  1. gRPC学习记录(六)--客户端连接池
  2. King of the Ether
  3. GAN模型-分析角度
  4. Android JNI原理分析
  5. swing退出子窗口事件_如何创建有效的退出弹出窗口?
  6. mysql5.5连接器_MySQL :: MySQL 5.1参考手册 :: 26. 连接器
  7. 链接哈希是什么_熊猫人行情:什么是工作量证明机制(POW)
  8. php 订单过期处理,PHP实现处理过期或者超时订单,并还原库存
  9. hdu3549(又是最大流模板题)
  10. 约数研究pascal程序