class TQueue { private ArrayList queue; public TQueue () { queue = new ArrayList(); } // TQueue public synchronized void orderedInsert (Sortable s) { int i; for (i = 0; i < queue.size(); i++) if (s.compareTo(queue.get(i)) < 0) queue.add(i, s); if (i == queue.size()) queue.add(s); return; } // insert public synchronized Sortable getFirstElementIfPreviousTo (int orderN) { if (queue.size() != 0 && queue.get(0).getOrderNumber() <= orderN) return queue.remove(0); else return null; } // getOlderEventIndex } // TQueue class Evt implements Sortable { private int time; private String description; public Evt (int time0, String description0) { time = time0; description = description0; } // Evt public String getDescription () { return description; } // getDescription public int getTime () { return time; } // getTime public int compareTo (Object o) { return time - ((Evt)o).time; } // compareTo public int getOrderNumber () { return time; } // getOrderNumber public String toString () { return getClass().getName()+"[time="+time+", description="+description+"]"; } // toString } // Evt interface Sortable extends Comparable { public int getOrderNumber (); } // Sortable