iterator集合迭代器

集合迭代器是迭代设计模式的一种有效实现,适用于List、Set和Map等不同数据结构。通过将各种集合转化为迭代器,统一使用hasNext()和next()方法进行遍历,实现了集合的统一遍历方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

集合迭代器是迭代设计模式的一种很好的实现

集合中的List Set Map数据结构各不相同,因此,设计一个迭代接口,所有不同结构集合都分别实现他们的迭代遍历
集合的迭代本质就是把 所有的集合的遍历方式转换成一种遍历方式

实现步骤:

List集合转换成迭代器集合,用迭代器的API方法来迭代数据
Set集合装换成迭代器集合,用迭代器的API方法来迭代数据
Map集合转换迭代器集合,用迭代器API的方法来迭代数据

利用迭代器的 hasNext();方法和next();方法来遍历集合

    public class IteratorService {
    	/**
    	 * 获取一个List集合对象
    	 * @return
    	 */
    	public List<Person> getPerson_List(){
    		List<Person> list=new  ArrayList<Person>();
    		Student stu1=new Student("张三",20,"S001");
    		Student stu2=new Student("李四",21,"S002");
    		Student stu3=new Student("王五",22,"S003");
    		Student stu4=new Student("张五",20,"S003");
    	
    		Teacher tea1=new Teacher("赵六",20,10000);
    		Teacher tea2=new Teacher("田七",35,20000);
    		list.add(stu1);
    		list.add(stu2);
    		list.add(stu3);
    		list.add(stu4);
    		list.add(tea1);
    		list.add(tea2);
    		return list;
    	}
    	/**
    	 * 获取一个Set集合对象
    	 * @return
    	 */
    	public Set<Person> getPerson_Set(){
    		Set<Person> set=new HashSet<Person>();
    		Student stu1=new Student("张三",20,"S001");
    		Student stu2=new Student("李四",21,"S002");
    		Student stu3=new Student("王五",22,"S003");
    		Student stu4=new Student("张五",20,"S003");
    	
    		Teacher tea1=new Teacher("赵六",20,10000);
    		Teacher tea2=new Teacher("田七",35,20000);
    		set.add(stu1);
    		set.add(stu2);
    		set.add(stu3);
    		set.add(stu4);
    		set.add(tea1);
    		set.add(tea2);
    		return set;
    	}
    	/**
    	 * 获取一个Map集合对象
    	 * @return
    	 */
    	public Map<String,Person> getPerson_Map(){
    		Map<String,Person> map=new HashMap<String,Person>();
    		Student stu1=new Student("张三",20,"S001");
    		Student stu2=new Student("李四",21,"S002");
    		Student stu3=new Student("王五",22,"S003");
    		Student stu4=new Student("张五",20,"S003");
    	
    		Teacher tea1=new Teacher("赵六",20,10000);
    		Teacher tea2=new Teacher("田七",35,20000);
    		map.put(stu1.getName(), stu1);
    		map.put(stu2.getName(), stu2);
    		map.put(stu3.getName(), stu3);
    		map.put(stu4.getName(), stu4);
    		map.put(tea1.getName(), tea1);
    		map.put(tea2.getName(), tea2);
    		return map;
    	}
}

实现用迭代器遍历

/**
 * 把List集合转换成iterator迭代器
 * 然后用迭代器的方式迭代数据
 */
public  void iterator_List(){
	List<Person> list=this.getPerson_List();
	Iterator<Person> it=list.iterator();//把List集合转换成迭代器集合
	while(it.hasNext()){//it.hasNext(),只是判断是否有下一个数据
		//如果有下一个数据,就取出下一个数据
		Person p=it.next();
		//继续根据具体的业务逻辑去获取p对象中的数据
		CommonPerson cp=(CommonPerson)p;
		System.out.println("name="+cp.getName()
		               +"  age="+cp.getAge());
	}
}
/**
 * 把Set集合转换成iterator迭代器
 * 然后用迭代器的方式迭代数据
 */
public  void iterator_Set(){
	Set<Person> set=this.getPerson_Set();
	Iterator<Person> it=set.iterator();//把Set集合转换成迭代器集合
	while(it.hasNext()){//it.hasNext(),只是判断是否有下一个数据
		//如果有下一个数据,就取出下一个数据
		Person p=it.next();
		//继续根据具体的业务逻辑去获取p对象中的数据
		CommonPerson cp=(CommonPerson)p;
		System.out.println("name="+cp.getName()
		               +"  age="+cp.getAge());
	} 
}
/**
 * 把map集合转换成iterator迭代器
 * 然后用迭代器的方式迭代数据
 */
public  void iterator_Map(){
	Map<String,Person> map=this.getPerson_Map();
    Iterator<Person> it=map.values().iterator();//把map集合的素有value转换成迭代器集合
	while(it.hasNext()){//it.hasNext(),只是判断是否有下一个数据
		//如果有下一个数据,就取出下一个数据
		Person p=it.next();
		//继续根据具体的业务逻辑去获取p对象中的数据
		CommonPerson cp=(CommonPerson)p;
		System.out.println("name="+cp.getName()
		               +"  age="+cp.getAge());
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值