1、Iterator迭代器模式
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));
}
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;
}
}
}