集合遍历之迭代器

/*
 * 迭代
 * A:迭代器的概述
 * 集合是用来存储元素的,存储的元素需要查看,那么就需要迭代

 * */

package com.geima.conlection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

import com.heima.bean.Student;

public class demo5_iterator {
/*
 * 迭代
 * 	A:迭代器的概述
 * 		集合是用来存储元素的,存储的元素需要查看,那么就需要迭代
 * */
	public static void main(String[] args) {
		//demo1();  对Java写好的 类的迭代,那么对自己写的类应该如何迭代呢
		
		Collection c=new ArrayList();
		c.add(new Student("zhang",23));
		c.add(new Student("add",22));
		
		Iterator it=c.iterator();
		while(it.hasNext()){
			System.out.println(it.next());
			Student s =(Student)it.next();//父类引用不能使用子类对象方法,需要向下转型
			System.out.println(s.getName()+"..."+s.getAge());
		}
	}

private static void demo1() {
	Collection c=new ArrayList();
	c.add("a");
	c.add("b");
	c.add("c");
	c.add("d");
	//对集合中的元素迭代遍历
	Iterator it=c.iterator();//获取了it迭代器
//		boolean b1=it.hasNext();//判断集合中是否有元素,有就返回true
//		Object obj1=it.next();
//		System.out.println(b1);//true
		System.out.println(obj1);//a
//		
//		boolean b2=it.hasNext();//判断集合中是否有元素,有就返回true
//		Object obj2=it.next();
//		System.out.println(b2);//true
//		System.out.println(obj2);//b..但是这样写太墨迹了,可以用while来解决
	
	while(it.hasNext()){
		System.out.println(it.next());
	}
}

}

迭代器原理及代码解析

A:迭代器原理

            迭代器是对集合进行遍历,而每一个集合内部的存储结构是相同的,所以每一个集合的存和取是不一样的,那么就需要在每一个类中定义一个hasNext()和Next()方法,但是这会让整个集合体系过于臃肿。迭代器是将这些方法向上抽取出接口,然后在每个类的内部,定义自己的迭代方式,这样的好处有二。第一是规定了整个集合体系的便利方式都是hasNext()和Next()方法,第二就是代码有底层内部实现,使用者不用管怎么实现,会用即可。


B:迭代器源码解析

        在eclipse中ctrl+shift+t找到ArrayLIst类

        ctrl+o查找iterator()方法

        查看返回值类型是new Itr(),说明Itr这个类i实现了Iterator接口

        查找Itr这个内部类,发现重写了Iterator中的所有抽象方法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值