2017-07-07 1 views
-1

Ich möchte HashMap diese sortieren:ich will hashmap (decending) in Java zu Sortierung

HashMap<Integer,Integer> hp=new HashMap<Integer,Integer>(); 

TreeMap<Integer,Integer> stm = new TreeMap<Integer,Integer>(); 
stm.putAll(hp); 

In Wert umkehren Sortierung.

Wenn die Werte gleich sind, verwende ich Schlüssel als nächste Bedingung. Wert ist umgekehrt, Schlüssel nicht.

+1

Eine HashMap unterstützt keine Sortierung, daher können Sie die Einträge in der hashmap nicht selbst sortieren. – Korashen

+1

Sie können eine HashMap nicht sortieren, aber es sind sortierte Maps. Siehe https://stackoverflow.com/questions/2889777/difference-between-hashmap-linkedhashmap-and-treemap – Alexander

+0

Was hast du bisher versucht? –

Antwort

0

Wir können die Art von HashMap implementieren, indem wir auf TreeMaps Wert sort verweisen. Ich habe versucht, ein Beispiel zu schreiben, um es mit Ihnen zu teilen.

public class HashMapTest { 
public static void main(String[] args) { 
    Map<String, String> map = new HashMap<String, String>(); 
    map.put("c", "ccccc"); 
    map.put("a", "aaaaa"); 
    map.put("b", "bbbbb"); 
    map.put("d", "ddddd"); 

    List<Map.Entry<String,String>> list = new ArrayList<Map.Entry<String,String>>(map.entrySet()); 
    Collections.sort(list,new Comparator<Map.Entry<String,String>>() { 
     //Ascending order 
     public int compare(Entry<String, String> o1, 
       Entry<String, String> o2) { 
      return o1.getValue().compareTo(o2.getValue()); 
     } 

    }); 

    for(Map.Entry<String,String> mapping:list){ 
      System.out.println(mapping.getKey()+":"+mapping.getValue()); 
     } 
} 

die resule ist

a: aaaaa

b: bbbbb

c: CCCCC

d: ddddd

0

Warum Sie nicht die entrySet bekommen aus der Karte und versuchen Sie es zu sortieren, indem Sie einen Komparator nach Ihren Bedürfnissen erstellen. Wenn es sortiert ist, erstellen Sie einfach eine neue Map-Instanz und iterieren Sie die sortierte Menge in die Map. Es ist ein wenig teuer, aber tut was Sie brauchen.

Wenn Sie irgendwelche Probleme bei der Umsetzung finden. Sag mir, ich werde dir den Code geben. :)