Ich möchte eine SortedMap haben, die nach Values sortiert. Mein Ansatz:
Blöderweise bekomme ich jetzt einen StackOverflowError, da TreeMap.get anscheinend den Komparator aufruft und so eine Endlosschleife auftritt.
Wie kann ich das Problem am elegantesten Lösen?
Java:
public class ValueComparator<S,T extends Comparable<T>> implements Comparator<S>
{
Map<S,T> map;
public ValueComparator(Map<S, T> map) {setMap(map);}
public void setMap(Map<S, T> map) {this.map = map;}
@Override
public int compare(S s, S t) {return map.get(s). compareTo(map.get(t));}
}
public void testIt()
{
final ValueComparator<String,Integer> valueComparator = new ValueComparator<String,Integer>(null);
final SortedMap<String,Integer> personToAge = new TreeMap<String,Integer>(valueComparator);
valueComparator.setMap(personToAge);
personToAge.put("Anton",50);
personToAge.put("Peter",15);
}
Blöderweise bekomme ich jetzt einen StackOverflowError, da TreeMap.get anscheinend den Komparator aufruft und so eine Endlosschleife auftritt.
Wie kann ich das Problem am elegantesten Lösen?