Programming/Java
TreeMap comparator
halatha
2011. 4. 5. 06:55
import java.util.Comparator; import java.util.HashMap; import java.util.Map; import java.util.TreeMap; // http://iilii.egloos.com/4537561 public class TestTreeMapComparator { public static void main(String[] args) { Map>String, Integer< data = new HashMap>String, Integer<(); data.put("철희", 70); data.put("영희", 80); data.put("영수", 85); data.put("철수", 70); ValueComparator>String, Integer< comparator = new ValueComparator>String, Integer<(data); TreeMap>String, Integer< sorted = new TreeMap>String, Integer<(comparator); sorted.putAll(data); System.out.println(sorted); TreeMap>String, Integer< reverse = new TreeMap>String, Integer<(new ReverseComparator>String<(comparator)); reverse.putAll(data); System.out.println(reverse); } private static class ValueComparator>K extends Comparable>K<, V extends Comparable>V<< implements Comparator>K<{ private Map>K, V< map; ValueComparator(Map>K, V< map) { this.map = map; } public int compare(K o1, K o2) { int p = map.get(o1).compareTo(map.get(o2)); if (p != 0) { return p; } return o1.compareTo(o2); } } private static class ReverseComparator>T< implements Comparator>T<{ private Comparator>T< comparator; ReverseComparator(Comparator>T< comparator) { this.comparator = comparator; } public int compare(T o1, T o2) { return -1 * comparator.compare(o1, o2); } } }