Tweak ordering for sorting- should be a stable sort now

This commit is contained in:
Christian Weeks 2012-05-10 15:48:26 -04:00
parent 7b5ad64378
commit bb2af1d883
2 changed files with 16 additions and 6 deletions

View File

@ -212,7 +212,7 @@ public abstract class BaseMod implements IWorldGenerator, IPickupNotifier, IDisp
*/
public String getPriorities()
{
return null;
return "";
}
/**

View File

@ -15,6 +15,7 @@ package cpw.mods.fml.common.toposort;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@ -22,6 +23,8 @@ import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
/**
* Topological sort for mod loading
@ -34,8 +37,9 @@ public class TopologicalSort
{
public static class DirectedGraph<T> implements Iterable<T>
{
private final Map<T, Set<T>> graph = new HashMap<T, Set<T>>();
private final Map<T, SortedSet<T>> graph = new HashMap<T, SortedSet<T>>();
private List<T> orderedNodes = new ArrayList<T>();
public boolean addNode(T node)
{
// Ignore nodes already added
@ -44,7 +48,13 @@ public class TopologicalSort
return false;
}
graph.put(node, new HashSet<T>());
orderedNodes.add(node);
graph.put(node, new TreeSet<T>(new Comparator<T>()
{
public int compare(T o1, T o2) {
return orderedNodes.indexOf(o1)-orderedNodes.indexOf(o2);
}
}));
return true;
}
@ -85,12 +95,12 @@ public class TopologicalSort
throw new NoSuchElementException("Missing node from graph");
}
return Collections.unmodifiableSet(graph.get(from));
return Collections.unmodifiableSortedSet(graph.get(from));
}
@Override
public Iterator<T> iterator()
{
return graph.keySet().iterator();
return orderedNodes.iterator();
}
public int size()