Java学习笔记(六)——设计模式(待补充)

本文深入探讨了迭代器模式在航班调度系统中的应用,通过自定义迭代器实现对到达和离开航班的有序迭代,确保了航班信息按时间先后顺序展示。文章详细介绍了Iterable和Iterator接口的使用,以及如何通过冒泡排序对航班条目进行时间排序。

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

1、Iterator迭代器模式

  • Iterable<E>: 重写public Iterator<E> iterator()
  • Iterator<E>:重写:
      	public boolean hasNext()
      	public E next()
      	public void remove()
    
    示例:
//按照时间前后对计划进行迭代
public class FlightBoard implements Iterable<FlightEntry<Plane>>{

	public Iterator<FlightEntry<Plane>> iterator(){
		return new PairIterator();
	}
	
	
	private class PairIterator implements Iterator<FlightEntry<Plane>>{
		private List<FlightEntry<Plane>> list;
	    private int number = 0;			
		public PairIterator() {
			this.list = tolist(arriveflights,leaveflights);
		}
		
		private List<FlightEntry<Plane>> tolist(FlightEntryCollection a,FlightEntryCollection b) {
			List<FlightEntry<Plane>> e = a.entrycollection();
			List<FlightEntry<Plane>> c = b.entrycollection();
			List<FlightEntry<Plane>> l= new ArrayList<>();
			
		   int i,j;
		   for(i=0;i<e.size();i++) {
			   l.add(e.get(i));
		   }
		   for(i=0;i<c.size();i++) {
			   l.add(c.get(i));
		   }
		   //compareTo()已经重写,比较计划发生时间前后
		   //利用冒泡排序,根据计划时间发生前后进行排序
		   for(i=0;i<l.size();i++) {
			   for(j=0;j<l.size()-i-1;j++) {
				   if(l.get(j).compareTo(l.get(j+1)) > 0) {
					   FlightEntry<Plane> f = l.get(j);
					   l.set(j, l.get(j+1));
					   l.set(j+1, f);
				   	}
			   	}
		   	}
		   return l;
		  }
		
		@Override public boolean hasNext() {
			if(this.number < this.list.size()) {
				return true;
			}
			return false;

		}
		
		@Override 
		public FlightEntry<Plane> next(){
			FlightEntry<Plane> l = this.list.get(number);
			number++;
			return l;
		}

	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值