diff --git a/classpath/java/util/TreeMap.java b/classpath/java/util/TreeMap.java index 6028637c38..29ea5972c0 100644 --- a/classpath/java/util/TreeMap.java +++ b/classpath/java/util/TreeMap.java @@ -11,24 +11,32 @@ package java.util; public class TreeMap implements Map { - private TreeSet> set; + private final Comparator comparator; + private transient TreeSet> set; - public TreeMap(final Comparator comparator) { - set = new TreeSet(new Comparator>() { - public int compare(MyEntry a, MyEntry b) { - return comparator.compare(a.key, b.key); - } - }); + public TreeMap(Comparator comparator) { + this.comparator = comparator; + initializeSet(); } - public TreeMap() { - this(new Comparator() { + private void initializeSet() { + final Comparator comparator = this.comparator != null ? + this.comparator : new Comparator() { public int compare(K a, K b) { return ((Comparable) a).compareTo(b); } + }; + set = new TreeSet(new Comparator>() { + public int compare(MyEntry a, MyEntry b) { + return comparator.compare(a.key, b.key); + } }); } + public TreeMap() { + this(null); + } + public String toString() { return Collections.toString(this); }