TreeMap comparator 본문

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);
        }
    }
}
Comments