import java.util.Collection; import java.util.HashSet; import java.util.Iterator; import java.util.Vector; public class SortGraph extends GenGraph { public SortGraph() { super(); } @Override public Iterator getNodenames() { return this.sortIterator(super.getNodenames()); } protected Iterator sortIterator(Iterator nodeiter) { Collection colNodenames = new Vector(); while (nodeiter.hasNext()) colNodenames.add(nodeiter.next()); SortableNodeName[] nodenames = new SortableNodeName[colNodenames.size()]; colNodenames.toArray(nodenames); boolean sortiert = true; do { sortiert = true; for (int i = 1; i < nodenames.length; i++) { try { if (nodenames[i].kleiner(nodenames[i - 1])) { SortableNodeName tmp = nodenames[i - 1]; nodenames[i - 1] = nodenames[i]; nodenames[i] = tmp; sortiert = false; } } catch (NotCompareableException e) { e.printStackTrace(); } } } while (!sortiert); colNodenames = new Vector(); for (int i = 0; i < nodenames.length; i++) { colNodenames.add((Knotenname) nodenames[i]); } return colNodenames.iterator(); } public Collection deleteNodesSmaller(SortableNodeName compare) { Collection> deletedEdges = new HashSet>(); Collection deletedNodes = new HashSet(); Iterator nodenameIter = super.getNodenames(); while(nodenameIter.hasNext()) { Knotenname nodename = nodenameIter.next(); try { if (nodename.kleiner(compare)) { Knoten node; try { node = this.getNode(nodename); deletedEdges.addAll(this.getOutboundEdges(node)); deletedEdges.addAll(this.getInboundEdges(node)); Iterator> edgeiter = deletedEdges.iterator(); while (edgeiter.hasNext()) { this.getEdgeslist().remove((edgeiter.next())); } this.deleteNode(nodename); deletedNodes.add(nodename); } catch (NodeNotFoundException e) { } } } catch (NotCompareableException e) { e.printStackTrace(); } } return deletedNodes; } }