mam HashMap takiego:W Javie, sortowanie hash mapie jego key.length()
HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("java",4);
map.put("go",2);
map.put("objective-c",11);
map.put("c#",2);
Teraz chcę uporządkować tę mapę przez jej długości klucza, jeśli dwa klawisze długości są równe (np idź i C# obie długości 2), a następnie posortowane według porządku alfba. więc wynik spodziewam się dostać to coś w rodzaju:
wydrukowany wynik: objective-c, 11 java, 4 C#, 2 iść, 2
tutaj jest mój własny attamp, ale to nie robi działa w ogóle ...
HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("java",4);
map.put("go",2);
map.put("objective-c",11);
map.put("c#",2);
Map<String,Integer> treeMap = new TreeMap<String, Integer>(
new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.length().compareTo(s2.length());
}
}
);
rzeczywiście pojawia się w sposób „” compareTo jako czerwony (nie móc skompilować) .... proszę mi ktoś pomóc z jakimś przykładzie kodu ... jestem nieco mylące jak używać klasy komparatora do dostosowywania kompa ponownie obiekt ...
podczas uruchamiania kodu, rezultat jest {c = 2 #, Java = 4, objective-c = 11}. pytanie brzmi: "idź", 2? –
Jest to spowodowane tym, że TreeMap używa komparatora, a komparator jest zdefiniowany tak, aby traktować 2 struny o jednakowej długości. Ponieważ OP grał z TreeMap, więc przedłużyłem jego odpowiedź, aby poprawić tylko część Komparatora. – sol4me
o co słychać, co myślisz o mojej odpowiedzi? ponieważ operacja nie wspomniała, że używanie treemap jest obowiązkowe użyłem innego stylu –