目录:

》迭代器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. redis cluster集群管理工具redis-trib.rb命令小结-运维笔记

    redis-trib.rb是redis官方推出的管理redis集群的工具,集成在redis的源码src目录下,是基于redis提供的集群命令封装成简单.便捷.实用的操作工具.redis-trib.rb ...

  2. ES 入门记录之 match和term查询的区别

    ElasticSearch 系列文章 1 ES 入门之一 安装ElasticSearcha 2 ES 记录之如何创建一个索引映射 3 ElasticSearch 学习记录之Text keyword 两 ...

  3. FIND_IN_SET()函数

    今天在做项目时,看到了一个从没见过的MySQL函数——FIND_IN_SET(),顿时就产生了浓郁的兴趣,然后就搜了搜,翻了翻. 语法:FIND_IN_SET(str,strlist) 定义: 1. ...

  4. [转]Magento on Steroids – Best practice for highest performance

    本文转自:https://www.mgt-commerce.com/blog/magento-on-steroids-best-practice-for-highest-performance/ Th ...

  5. gulpjs

    http://www.cnblogs.com/2050/p/4198792.html   这篇文章很全面的讲解了gulpjs的使用 https://www.jianshu.com/p/9723ca2a ...

  6. IDEA@Data注释使用

    @Data注解主要是帮助解决Setter 和 Getter以及 toString这种重复的无脑工作 加入@Data注解可以直接帮助我们添加实体类相应的Setter 和 Getter以及 toStrin ...

  7. Contemplation! Algebra(矩阵快速幂,uva10655)

    Problem EContemplation! AlgebraInput: Standard Input Output: Standard Output Time Limit: 1 Second Gi ...

  8. ThreadLocal的用法

    阿里巴巴 java 开发手册中推荐的 ThreadLocal 的用法: public class DateUtil { public static final ThreadLocal<DateF ...

  9. Textview源码+绘制过程解析

    Android控件TextView的实现原理分析 为什么要规定所有与UI相关的操作都必须在主线程中执行呢?我们知道,这些与UI相关的操作都涉及到大量的控件内部状态以及需要访问窗口的绘图表面,也就是说, ...

  10. Java - "JUC" CyclicBarrier源码分析

    Java多线程系列--“JUC锁”10之 CyclicBarrier原理和示例 CyclicBarrier简介 CyclicBarrier是一个同步辅助类,允许一组线程互相等待,直到到达某个公共屏障点 ...