Как распечатать содержимое HashMapв порядке возрастания на основе его значений? - PullRequest
31 голосов
/ 31 августа 2010

У меня есть это HashMap, которое мне нужно распечатать в порядке возрастания в соответствии с значениями , содержащимися в нем ( не ключи ).

Но порядок, когда я его распечатываю, кажется случайным.

Как лучше всего распечатать его в порядке возрастания значений ?

Map<String, String> codes = new HashMap<String, String>();

codes.put("A1", "Aania");
codes.put("X1", "Abatha");
codes.put("C1", "Acathan");
codes.put("S1", "Adreenas");

Другими словами, приведенный выше пример должен распечатываться так:

A1, Aania
X1, Abatha
C1, Acathan
S1, Adreenas

Ответы [ 13 ]

0 голосов
/ 27 апреля 2015
 SmartPhone[] sp=new SmartPhone[4];
 sp[0]=new SmartPhone(1,"HTC","desire","black",20000,10,true,true);
 sp[1]=new SmartPhone(2,"samsung","grand","black",5000,10,false,true);
 sp[2]=new SmartPhone(14,"google nexus","desire","black",2000,30,true,false);
 sp[3]=new SmartPhone(13,"HTC","desire","white",50000,40,false,false);
0 голосов
/ 27 апреля 2015

Попробуйте:

try
{
    int cnt= m.getSmartPhoneCount("HTC",true);      
    System.out.println("total count of HTC="+cnt);
}  
catch (NoSuchBrandSmartPhoneAvailableException e)
{
    // TODO Auto-generated catch 
    e.printStackTrace();
}
0 голосов
/ 31 августа 2010

Самое простое решение - использовать отсортированную карту типа TreeMap вместо HashMap. Если у вас нет контроля над построением карты, то минимальным решением будет создание отсортированного набора ключей. Вам не нужна новая карта.

Set<String> sortedKeys = new TreeSet<String>();
sortedKeys.addAll(codes.keySet());

for(String key: sortedKeys){
    println(key  + ":" + codes.get(key));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...