Ich habe eine HashMap, die Zeichen zu einem Integer zuordnen. Um es nach Wert zu sortieren, habe ich meinen Komparator geschrieben und benutze TreeMap. Aber mir fehlt der Wert. Ich habe das für String "tree" überprüft. Meine map 'chars' nach jeder Schleife sieht aus wie {r = 1, t = 1, e = 2} und Baum nach putAll (zwei Zeilen später) ist {e = 2, r = 1}. Was passiert mit Char 't'? Warum wird es verpasst? Und wie kann ich es ändern?Fehlender Wert in einer TreeMap nach PutAll()
0
A
Antwort
2
Ihre ValueComparator
behandelt Einträge mit der gleichen Anzahl wie Duplikate. Eine einfache Lösung ist es, den Schlüssel als Tie-Break zu verwenden:
public int compare(Character a, Character b) {
int result = map.get(b).compareTo(map.get(a));
return result != 0 ? result : a.compareTo(b);
}
Alternativ können Sie Streams verwenden, um die Frequenzzuordnung zu erstellen, es zu sortieren und speichern Sie es eine geordnete LinkedHashMap
:
Map<Character, Integer> counts = s.chars()
.mapToObj(i -> (char)i)
.collect(Collectors.groupingBy(Function.identity(), Collectors.summingInt(c -> 1)))
.entrySet()
.stream()
.sorted(Collections.reverseOrder(Entry.comparingByValue()))
.collect(Collectors.toMap(Entry::getKey, Entry::getValue, (a, b) -> b, LinkedHashMap::new));
Verwandte Themen
- 1. Sortierung einer HashMap oder TreeMap nach Wert
- 2. Fehlender Wert eingeführt in einer logischen
- 3. Fehlender Parameter Wert in Alamofire
- 4. SAS Fehlender Wert
- 5. JavaScript-Variable fehlender Wert
- 6. SD-Karte-> Fehlender Wert
- 7. ggmap - fehlender Wert
- 8. Fehlender Wert für XmlElement
- 9. Was ist "natürliche Reihenfolge" in einer TreeMap?
- 10. TreeMap Überschreibungswerte
- 11. Stemming Wörter in r: Fehlender Wert
- 12. Wie spezifischen Schlüsselwert aus einer verschachtelten TreeMap
- 13. Sortieren der Werte in einer TreeMap Java
- 14. Implementieren einer squarified Treemap in Javascript
- 15. JAVA, in treemap möchte Wert ändern, in Objekt?
- 16. Fehlender Operanden nach 'L' Operator
- 17. Fehlender Wert in einem Balkendiagramm Tooltip
- 18. TreeMap-Konstruktor
- 19. TreeMap - Suchzeitkomplexität
- 20. Fehlender Statuswert nach Funktionsbindung in React
- 21. Region put() im Vergleich zu putAll() in Gemfire
- 22. Java: Zugriffselement einer ArrayList, das ein Wert in einer TreeMap ist
- 23. Treemap Visualisierung in Python
- 24. Fehler: fehlender Wert mit True/False
- 25. Eine TreeMap in Java verwenden
- 26. Java TreeMap entspricht in C#?
- 27. SelectPDF fehlender Inhalt nach der Konvertierung
- 28. JavaScript-Fehler, fehlender Name nach. Operator
- 29. Verwenden einer TreeMap als Eigenschaft in einer Person-Objektklasse
- 30. Doctrine2 fehlender Wert der verknüpften Tabelle
Ihr Komparator hält "r" und "t" für gleich. Die Karte wird nicht zwei Einträge für gleiche Schlüssel haben. – user2357112
Ich verstehe es. Aber ich weiß nicht, was ich dagegen tun soll ... kannst du mir einen Hinweis geben? – Malvinka
Eine Möglichkeit wäre, keine TreeMap für die Sortierung zu verwenden. – user2357112