目录:

》迭代器Iterator的使用

》迭代字符串集合

》迭代对象集合

》迭代器使用图解,和原理分析

》Java迭代器源代码

》迭代器Iterator的使用:

》迭代字符串集合

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator; /**
* 集合的迭代
*
* Iterator iterator() 集合的专用迭代器
* E next()获取指针当前的元素,指针移向下一个元素
* NoSuchElementException 没有这样的元素,因为你已经找到了最后
* boolean hasNext() 如果仍有元素可以迭代,则返回 true。
*/
public class IteratorDemo {
public static void main(String[] args) {
//创建集合
Collection c=new ArrayList(); //向集合中添加元素
c.add("hello");
c.add("world");
c.add("java"); //Iterator iterator()迭代器,集合的专用迭代方式
Iterator it=c.iterator();//Iterator是接口,iterator() 方法返回的是实现类,这里是多态
System.out.println(it.next());
System.out.println(it.next());
System.out.println(it.next());
// System.out.println(it.next());// // String s=null;
// while(it.hasNext()){
// s=(String)it.next();
// System.out.println(s);
// }
}
}

》迭代对象集合

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
*
* 练习:用集合存储5个学生对象,并把学生进行遍历,用迭代器遍历。
*
*问题1:能用while循环,那么能不能用for循环?
*问题2:不要次使用it.next()方法,因为每次使用都是访问一个对象。
*/
public class IteratorTest {
public static void main(String[] args) {
//创建集合对象
Collection c=new ArrayList(); //创建学生对象
Student s1=new Student("林清",26);
Student s2=new Student("周润发",45);
Student s3=new Student("黄健翔",25);
Student s4=new Student("谢霆锋",30);
Student s5=new Student("王菲",30); //向集合中添加学生对象
c.add(s1);
c.add(s2);
c.add(s3);
c.add(s4);
c.add(s5); //得到集合的迭代器
Iterator it=c.iterator(); //使用迭代器遍历学生集合
Student s=null;
while(it.hasNext()){
s=(Student)it.next();
System.out.println(s.getName()+"------"+s.getAge()); //NoSuchElementException 不要多次使用it.next()方法
// System.out.println(((Student)it.next()).getName()+"-----"+((Student)it.next()).getAge());
} //for循环改写
/* Student s=null;
for(Iterator it=c.iterator();it.hasNext();){
s=(Student)it.next();
System.out.println(s.getName()+"------"+s.getAge());
}*/
}
}

 

//bean

public class Student {
private String name;
private int age; public Student() {
super();
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
} }

 

》迭代器使用图解,和原理分析

》java迭代器源代码

public interface Inteator {
boolean hasNext();
Object next();
} public interface Iterable {
Iterator iterator();
} public interface Collection extends Iterable {
Iterator iterator();
} public interface List extends Collection {
Iterator iterator();
} public class ArrayList implements List {//在实现类里面才有Iterator接口的具体实现
public Iterator iterator() {
return new Itr();
} private class Itr implements Iterator {//是一个内部类,并且是不为外人所知的私有的
public boolean hasNext() {}
public Object next(){}
}
} Collection c = new ArrayList();
c.add("hello");
c.add("world");
c.add("java");
Iterator it = c.iterator(); //new Itr();
while(it.hasNext()) {
String s = (String)it.next();
System.out.println(s);
}

Iterator迭代器对象的更多相关文章

  1. python14 1.带参装饰器 | wrapper 了了解 # 2.迭代器 ***** # 可迭代对象 # 迭代器对象 # for迭代器 # 枚举对象

    ## 复习 '''函数的嵌套定义:在函数内部定义另一个函数 闭包:被嵌套的函数 -- 1.外层通过形参给内层函数传参 -- 2.验证执行 开放封闭原则: 功能可以拓展,但源代码与调用方式都不可以改变 ...

  2. day14带参装饰器,迭代器,可迭代对象 , 迭代器对象 ,for迭代器 , 枚举对象

    复习 ''' 函数的嵌套定义:在函数内部定义另一个函数 闭包:被嵌套的函数 -- 1.外层通过形参给内层函数传参 -- 2.验证执行 开放封闭原则: 功能可以拓展,但源代码与调用方式都不可以改变 装饰 ...

  3. JavaSE Collections类 , Iterator迭代器 , 增强for循环

    Collections 它是集合的工具类,为集合体系扩展了一些其他的方法.类中都是静态的方法,可以使用类名直接调用. 可变参数 在JDK1.5之后,如果我们定义一个方法需要接受多个参数,并且多个参数类 ...

  4. python第三十六课——2.迭代器对象

    满足前提: 1).必须是一个可迭代对象 2).可以被next()所作用的 举例: generator... 高效的检测一个对象是否是迭代器对象 需要使用collections模块中的Iterator类 ...

  5. 设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型)

      设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型) 1.概述 类中的面向对象编程封装应用逻辑.类,就是实例化的对象,每个单独的对象都有一个特定的身份和状态.单独的对象是一种组织代码的 ...

  6. Python 中 Iterator(迭代器)和Iterable(迭代对象)的区别

    直接可以用作for循环的数据类型有以下几种: tuple.list.dict.str等, 上述数据类型可以用作for循环的叫做可迭代对象Iterable.可以使用isinstance判断一个对象是否是 ...

  7. ES6笔记(6)-- Set、Map结构和Iterator迭代器

    系列文章 -- ES6笔记系列 搞ES6的人也是够无聊,把JS弄得越来越像Java.C++,连Iterator迭代器.Set集合.Map结构都出来了,不知道说什么好... 一.简单使用 1. iter ...

  8. Python 3.x自定义迭代器对象

    Python 3.x与Python 2.x之间存在着较多的语法细节差异.今天在看Python核心编程的时候,说到了自定义迭代器对象.于是动手将源码打了一遍,原书代码如下: class AnyIter( ...

  9. Iterator 迭代器(一)

         迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址.迭代器修改了常规指针的接口,所谓迭代器是一种概念上的抽象:那些行为 ...

随机推荐

  1. Python高级特性:迭代器和生成器

    在Python中,很多对象都是可以通过for语句来直接遍历的,例如list.string.dict等等,这些对象都可以被称为可迭代对象.至于说哪些对象是可以被迭代访问的,就要了解一下迭代器相关的知识了 ...

  2. 字符串匹配的KMP算法-16张图片看明白

    作者: 阮一峰 日期: 2013年5月 1日 字符串匹配是计算机的基本任务之一. 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另 ...

  3. goconfig - INI 解析器

    goconfig简介 goconfig是一个由Go语言开发的针对windows下常见的ini格式的配置文件解析器.该解析器在涵盖了所有ini文件操作的基础之上,又针对Go语言实际开发过程中遇到的一些需 ...

  4. SQL PKG示例

    CREATE OR REPLACE PACKAGE PKG_SYS_LOG IS -- Author : Li Cong -- Created : 2009-10-12 -- Purpose : 存放 ...

  5. nginx 代理之修改header 的HOST,实现代理转代理

    现有一个需求,需要从nginx跳转到k8s的traefik代理上,从而实现服务的访问,用于测试.直接修改proxy_set_header的HOST,修改为traefuk代理的域名,proxy_pass ...

  6. UIKit 框架之UIView二

    下面这些都是UIView一些基本的东西,具体的可以参考UIKit 框架之UIView一博客 一.自定义一个View // // MyView.m // UIView // // Created by ...

  7. 对类型“DevExpress.Xpf.Grid.GridControl”的构造函数执行符合指定的绑定约束的调用时引发了异常。

    用VS2012 修改别人的WPF代码时碰到这个问题,百度下有人遇到相同问题,不过版本不同,先试下再说. 解决方法:安装Netframework4.5的补丁 地址:http://support.micr ...

  8. linux中使用Crontab定时执行java的jar包无法使用环境变量的问题

    1.crontab简单使用 cmd 其实就是5个星星的事情,随便百度一下吧 5个时间标签用来标注执行的设定.比如每5分钟执行一次/5 * * * cmd 要特别注意 2.有些命令在命令行里执行很好,到 ...

  9. SQl语句查询性能优化

    [摘要]本文从DBMS的查询优化器对SQL查询语句进行性能优化的角度出发,结合数据库理论,从查询表达式及其多种查询条件组合对数据库查询性能优化进行分析,总结出多种提高数据库查询性能优化策略,介绍索引的 ...

  10. TCP连接与OKHTTP复用连接池

    Android网络编程(八)源码解析OkHttp后篇[复用连接池] 1.引子 在了解OkHttp的复用连接池之前,我们首先要了解几个概念. TCP三次握手 通常我们进行HTTP连接网络的时候我们会进行 ...