Iterator迭代器对象
目录:
》迭代器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迭代器对象的更多相关文章
- python14 1.带参装饰器 | wrapper 了了解 # 2.迭代器 ***** # 可迭代对象 # 迭代器对象 # for迭代器 # 枚举对象
## 复习 '''函数的嵌套定义:在函数内部定义另一个函数 闭包:被嵌套的函数 -- 1.外层通过形参给内层函数传参 -- 2.验证执行 开放封闭原则: 功能可以拓展,但源代码与调用方式都不可以改变 ...
- day14带参装饰器,迭代器,可迭代对象 , 迭代器对象 ,for迭代器 , 枚举对象
复习 ''' 函数的嵌套定义:在函数内部定义另一个函数 闭包:被嵌套的函数 -- 1.外层通过形参给内层函数传参 -- 2.验证执行 开放封闭原则: 功能可以拓展,但源代码与调用方式都不可以改变 装饰 ...
- JavaSE Collections类 , Iterator迭代器 , 增强for循环
Collections 它是集合的工具类,为集合体系扩展了一些其他的方法.类中都是静态的方法,可以使用类名直接调用. 可变参数 在JDK1.5之后,如果我们定义一个方法需要接受多个参数,并且多个参数类 ...
- python第三十六课——2.迭代器对象
满足前提: 1).必须是一个可迭代对象 2).可以被next()所作用的 举例: generator... 高效的检测一个对象是否是迭代器对象 需要使用collections模块中的Iterator类 ...
- 设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型)
设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型) 1.概述 类中的面向对象编程封装应用逻辑.类,就是实例化的对象,每个单独的对象都有一个特定的身份和状态.单独的对象是一种组织代码的 ...
- Python 中 Iterator(迭代器)和Iterable(迭代对象)的区别
直接可以用作for循环的数据类型有以下几种: tuple.list.dict.str等, 上述数据类型可以用作for循环的叫做可迭代对象Iterable.可以使用isinstance判断一个对象是否是 ...
- ES6笔记(6)-- Set、Map结构和Iterator迭代器
系列文章 -- ES6笔记系列 搞ES6的人也是够无聊,把JS弄得越来越像Java.C++,连Iterator迭代器.Set集合.Map结构都出来了,不知道说什么好... 一.简单使用 1. iter ...
- Python 3.x自定义迭代器对象
Python 3.x与Python 2.x之间存在着较多的语法细节差异.今天在看Python核心编程的时候,说到了自定义迭代器对象.于是动手将源码打了一遍,原书代码如下: class AnyIter( ...
- Iterator 迭代器(一)
迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址.迭代器修改了常规指针的接口,所谓迭代器是一种概念上的抽象:那些行为 ...
随机推荐
- CRM项目hellokitty部分交互界面
登录界面 实现密码的不显示,验证码的跟换 员工管理界面 完成所有的功能 学校统计界面 完成所有的功能 班级管理 差一个手风琴组件 其他功能也完成了
- js设计模式之发布/订阅模式模式
一.前言 发布订阅模式,基于一个主题/事件通道,希望接收通知的对象(称为subscriber)通过自定义事件订阅主题,被激活事件的对象(称为publisher)通过发布主题事件的方式被通知. 就和用户 ...
- ConcurrentHashMap 扩容分析拾遗
前言 这是一篇对 transfer 方法的拾遗,关于之前那篇文章的一些一笔带过,或者当时不知道的地方进行回顾. 疑点 1. 为什么将链表拆成两份的时候,0 在低位,1 在高位? 回顾一下 transf ...
- C#图片文字识别
图片识别的技术到几天已经很成熟了,只是相关的资料很少,为了方便在此汇总一下(C#实现),方便需要的朋友查阅,也给自己做个记号. 图片识别的用途:很多人用它去破解网站的验证码,用于达到自动刷票或者是批量 ...
- Oracle问题之ORA-12560TNS:协议适配器错误-转载
作者:@haimishasha本文为作者原创,转载请注明出处:https://www.cnblogs.com/haimishasha/p/5394963.html 目录 Oracle问题之ORA-12 ...
- Redis——非阻塞IO和队列
Redis是个高并发的中间件,但是确实是单线程.而且,Nginx.Node.js等也是单线程的.Redis通过非阻塞IO(IO多路复用)处理那么多的并发客户端连接,并且,由于Redis所有的数据都在内 ...
- Spring 概念
spring概念 1.spring是一个开源的轻量级的开源框架. 2.spring的核心主要分为两部分: (1)aop:面向切面编程,扩展功能不是修改源代码实现. (2)ioc:控制反转,比如有一个类 ...
- HDU4704(SummerTrainingDay04-A 欧拉降幂公式)
Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submi ...
- Codeforces500C(SummerTrainingDay01-G)
C. New Year Book Reading time limit per test:2 seconds memory limit per test:256 megabytes input:sta ...
- Java 并发:Executor ExecutorService ThreadPoolExecutor
Executor Executor仅仅是一个简单的接口,其定义如下 public interface Executor { void execute(Runnable command); } 作为一个 ...