'Value> on the values in Java?'에 해당되는 글 1건

  1. 2012.10.17 [펌] How to sort a Map<Key, Value> on the values in Java?
01.JAVA/Java2012. 10. 17. 07:13
반응형

출처 : http://stackoverflow.com/questions/109383/how-to-sort-a-mapkey-value-on-the-values-in-java

 

It seems much easier than all of the foregoing. Use a TreeMap as follows:

public class Testing { 
 
    public static void main(String[] args) { 
 
        HashMap<String,Double> map = new HashMap<String,Double>(); 
        ValueComparator bvc =  new ValueComparator(map); 
        TreeMap<String,Double> sorted_map = new TreeMap<String,Double>(bvc); 
 
        map.put("A",99.5); 
        map.put("B",67.4); 
        map.put("C",67.4); 
        map.put("D",67.3); 
 
        System.out.println("unsorted map: "+map); 
 
        sorted_map.putAll(map); 
 
        System.out.println("results: "+sorted_map); 
    } 
} 
 
class ValueComparator implements Comparator<String> { 
 
    Map<String, Double> base; 
    public ValueComparator(Map<String, Double> base) { 
        this.base = base; 
    } 
 
    // Note: this comparator imposes orderings that are inconsistent with equals.     
    public int compare(String a, String b) { 
        if (base.get(a) >= base.get(b)) { 
            return -1; 
        } else { 
            return 1; 
        } // returning 0 would merge keys 
    } 
} 

Output:

    unsorted map: {D=67.3, A=99.5, B=67.4, C=67.4}
    results: {D=67.3, B=67.4, C=67.4, A=99.5}
    

 

Posted by 1010