目录:

》迭代器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. (转)Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring

    Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring Mybatis在与Spring集成的时候可以配置MapperFactoryBea ...

  2. Quart2D矩阵变换

    如果想让它可以有前面介绍的那种反射变化的效果,在绘图中也是可以的. 一.首先看一下未加任何矩阵变换时的图像 CGContextRef context=UIGraphicsGetCurrentConte ...

  3. C# Thread.Abort方法真的让线程停止了吗?

    大家都知道在C#里面,我们可以使用 Thread.Start方法来启动一个线程,当我们想停止执行的线程时可以使用Thread.Abort方法来强制停止正在执行的线程,但是请注意,你确定调用了Threa ...

  4. 学习Memcached:1基本配置与安装

    今天把刚刚学习的到memcached写在博客里,以免以后自己遗忘. 1.首先下载Memcached数据库服务文件,这是我下载好的这个memcached文件. 2.接下来就启动这个exe.通常我需要讲这 ...

  5. APP中内嵌H5页面为什么不能下载?

    在APP中内嵌H5页面,若页面上存在下载链接,没有任何反应,为什么呢? 原因是app中内嵌的H5页面是WebView解析的,什么是WebView呢? 在Android手机中内置了一款高性能webkit ...

  6. PHP实现大转盘抽奖算法

    流程: 1.拼装奖项数组,2.计算概率,3.返回中奖情况 代码如下:中奖概率 ' v ' 可以在后台设置,传到此方法中,注意传整数 function get_gift(){ //拼装奖项数组 // 奖 ...

  7. Python 并发编程(管道,事件,信号量,进程池)

    管道 Conn1,conn2 = Pipe() Conn1.recv() Conn1.send() 数据接收一次就没有了 from multiprocessing import Process,Pip ...

  8. kotlin3-IdeaIU编辑器字体自动放大缩小

  9. js多线程(worker)

    浏览器端js是单线程执行,所以当js执行高负载运算时,UI渲染就会阻塞,页面就会出现卡顿,用户体验就不是很好 js为此也提供了异步操作,例如: 定时器(setTimeout 和 setInterval ...

  10. innodb索引统计信息

    以下分析基于mysql5.6.10 统计信息相关字典表 information_schema.statistics mysql.innodb_table_stats mysql.innodb_inde ...