In HashMaps sollten keine Doppelpunkte verwendet werden, da sie für die Gleichheit schwer zu vergleichen sind.
Versuchen Sie jemals, map.get(key)
die Werte basierend auf bestimmten Schlüsseln zu erstellen?
Wenn ja , dann gilt das Argument "schwer zu vergleichen" und Sie sollten diese Datenstruktur wahrscheinlich vermeiden (oder sich immer auf %code% / %code% / %code% verlassen und Bereiche der Karte holen).
Wenn nein (dh du tust normalerweise nur %code% oder iterierst über %code% ), würde ich sagen, dass du %code% als Schlüssel verwendest.
Bei den doppelten Werten handelt es sich um einen Haufen mathematischer Berechnungen, sodass die Wahrscheinlichkeit eines doppelten Werts extrem gering ist.
Ist es ein Bug wenn Sie tatsächlich ein Duplikat erhalten?
Wenn ja , dann ist es nicht die richtige Datenstruktur. Sie könnten zum Beispiel eine %code% stattdessen aus Guava.
Wenn no , (dh es spielt keine Rolle, auf welchen der beiden Werte es zutrifft, weil sie sich sowieso nur durch ein kleines Epsilon unterscheiden können), dann sollte es Ihnen gut gehen.
Wenn sie nur sortiert werden sollen, gibt es bessere Sammlungen (zum Beispiel %code% ). Sie können auch eine beliebige Liste verwenden und die Dienstprogramme zum Sortieren verwenden (ich denke, sie sind in %code% ).
Verwenden Sie Maps und Tabellen nur, wenn Sie direkt auf einen Eintrag mit seinem Schlüssel zugreifen möchten.
Das Problem mit Doppelpunkten in Baumkarten ist genau das gleiche wie bei Doppelpunkten in der Hash-Map - Vergleich für Gleichheit. Wenn Sie Aufrufe von %code% vermeiden und stattdessen mit Bereichsabfragen bleiben (z. B. mithilfe von %code% ), sollten Sie in Ordnung sein.
%Vor%Dies druckt
%Vor%Sehen Sie sich dieses Snippet auf ideone an.
Wenn Sie sie nur sortieren möchten, ist es am besten, ein Wrapper-Objekt um das Double und das Objekt zu erstellen, die "vergleichbare" Schnittstelle auf diesem Wrapper zu implementieren und eine einfache Auflistung zu verwenden, um sie zu sortieren
In HashMaps sollten keine Doppelpunkte verwendet werden, da sie für die Gleichheit schwer zu vergleichen sind.
Versuchen Sie jemals, get
die Werte basierend auf bestimmten Schlüsseln zu erstellen?
Wenn ja , dann gilt das Argument "schwer zu vergleichen" und Sie sollten diese Datenstruktur wahrscheinlich vermeiden (oder sich immer auf tailMap
/ headMap
/ submap
verlassen und Bereiche der Karte holen).
Wenn nein (dh du tust normalerweise nur for (Double key : map.keySet()) ...
oder iterierst über entrySet
), würde ich sagen, dass du Double
als Schlüssel verwendest.
Bei den doppelten Werten handelt es sich um einen Haufen mathematischer Berechnungen, sodass die Wahrscheinlichkeit eines doppelten Werts extrem gering ist.
Ist es ein Bug wenn Sie tatsächlich ein Duplikat erhalten?
Wenn ja , dann ist es nicht die richtige Datenstruktur. Sie könnten zum Beispiel eine Multimap
stattdessen aus Guava.
Wenn no , (dh es spielt keine Rolle, auf welchen der beiden Werte es zutrifft, weil sie sich sowieso nur durch ein kleines Epsilon unterscheiden können), dann sollte es Ihnen gut gehen.
Das Problem mit Doppelpunkten in Baumkarten ist genau das gleiche wie bei Doppelpunkten in der Hash-Map - Vergleich für Gleichheit. Wenn Sie Aufrufe von treeMap.get(myDouble)
vermeiden und stattdessen mit Bereichsabfragen bleiben (z. B. mithilfe von submap
), sollten Sie in Ordnung sein.
Dies druckt
%Vor%Sehen Sie sich dieses Snippet auf ideone an.
Wenn sie nur sortiert werden sollen, gibt es bessere Sammlungen (zum Beispiel SortedSet
). Sie können auch eine beliebige Liste verwenden und die Dienstprogramme zum Sortieren verwenden (ich denke, sie sind in java.util.Collection
).
Verwenden Sie Maps und Tabellen nur, wenn Sie direkt auf einen Eintrag mit seinem Schlüssel zugreifen möchten.
Tags und Links java sorting collections treemap