erst containsKey oder gleich get

Status
Nicht offen für weitere Antworten.
S

stev.glasow

Gast
Wie macht ihr das? so:
Code:
if(myMap.containsKey(key) ){
   aa = (GuluGulu)myMao.get(key);
}
else{
  aa = new GuluGulu();
  myMap.put(key, aa);
}

oder so:
Code:
aa = (GuluGulu)myMao.get(key);
if(aa == null){
     aa = new GuluGulu();
     myMap.put(key, aa);   
}


Der erste ist ja etwas sauberer, da aa = (GuluGulu)myMao.get(key); ja auch null liefern kann, aber der zweite müsste doch eigentlich etwas schneller laufen, oder? Wenn aa nicht null sein darf oder kann, nehm ich eigentlch immer die zweite Variante.
Ich glaub das hab ich schon mal gefragt ???:L
 

meez

Top Contributor
Ich machs mit contains...
Wahrscheinlich läuft der zweite schon schneller, aber eine Ueberlagerung von return Werten sollte wenn möglich vermieden werden (Das ist so'n C mist)...
 
B

Beni

Gast
Das erste hat 3 Suchen, das zweite nur 2. Also läuft die zweite Variante um 50% schneller als die erste.

Deine Entscheidung... ich würde die performatere Lösung vorziehen.
 

meez

Top Contributor
Beni hat gesagt.:
Das erste hat 3 Suchen, das zweite nur 2. Also läuft die zweite Variante um 50% schneller als die erste.

Da man den put "weglassen" kann, ist es also 2 zu 1 => 100% schneller :bae:
 
S

stev.glasow

Gast
meez hat gesagt.:
Wahrscheinlich läuft der zweite schon schneller, aber eine Ueberlagerung von return Werten sollte wenn möglich vermieden werden (Das ist so'n C mist)...
Warum?
 

meez

Top Contributor
Weil in Java nicht die Performance unbedingt im Vordergrund steht, sondern die Wiederverwertbarkeit und die Lesbarkeit des Codes. Wenn du nun eine Funktion hast, die einen int zurückgibt, und jede der 4 Milliarden Zustände eine andere Funktion/Meinung hat (überlagert ist), ist das nicht gerade förderlich für die "entkomplexisierung" des Codes.
 
B

Beni

Gast
Eine extra Operation, die nicht gerade billig ist, nur um den Code ein bisschen schöner zu halten?

Da würd ich doch eher eine zusätzliche Variable vorschlagen, "perhapsNullReturnValueReadyToOverwrite" oder so...
 

meez

Top Contributor
Übrigens:

http://java.sun.com/j2se/1.3/docs/api/java/util/HashMap.html#get(java.lang.Object)
Returns the value to which this map maps the specified key. Returns null if the map contains no mapping for this key. A return value of null does not necessarily indicate that the map contains no mapping for the key; it's also possible that the map explicitly maps the key to null. The containsKey operation may be used to distinguish these two cases.

Genau das Problem mit dem überlagern...
 
S

stev.glasow

Gast
stevg hat gesagt.:
Der erste ist ja etwas sauberer, da aa = (GuluGulu)myMao.get(key); ja auch null liefern kann,...
[edit] ah, auch wenn der key matcht, meinte ich :)

stevg hat gesagt.:
Wenn aa nicht null sein darf oder kann, nehm ich eigentlch immer die zweite Variante.

Das ist doch gemeint oder nicht?
 
B

Beni

Gast
Ok, dann sind die Codeschnippsel von stevg semantisch unterschiedlich... dann kommt es drauf an, was stevg mit einem "contains" aber ist trotzdem "null" machen will.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Input/Output FileChannel writes / werden diese gecached vom OS und dann erst geschrieben? Allgemeine Java-Themen 6
S Fehlermeldungen erscheinen erst in der Ausführung des Programms Allgemeine Java-Themen 11
H Runtime reagiert erst wenn Programm abbricht Allgemeine Java-Themen 1
D mouseWheelMoved => erst reagieren, wenn für 1s das Mausrad nicht mehr benutzt wurde Allgemeine Java-Themen 4
S Start des zweiten Threads erst nach Beenden des ersten Threads Allgemeine Java-Themen 13
T MEthodenauruf testen, wenn instanz erst erzeugt wird Allgemeine Java-Themen 0
D Nutzen, erst deklarieren, oder neu erstellen? Allgemeine Java-Themen 11
G Button-Registrierung beim ActionListener erst NACH Tastendruck Allgemeine Java-Themen 2
H Scanner: Ausgabe erst nach Abbruch Allgemeine Java-Themen 8
H StackOverflowError erst ab 87 Array Elementen Allgemeine Java-Themen 4
F externes Programm beginnt erst nach dem ende des mainprogrammes Allgemeine Java-Themen 3
-MacNuke- Calendar erst nach getTime() gesetzt? Allgemeine Java-Themen 4
T Threadsicheres wait() [lock erst mit wait() abgeben] Allgemeine Java-Themen 31
S Zweiten Thread erst starten wenn erster Thread beendet ist ? Allgemeine Java-Themen 6
B Datei erst öffnen, wenn EOF gesetzt ? Allgemeine Java-Themen 4
M Programmablauf nach letzter eingabe erst fortsetzten Allgemeine Java-Themen 2
G Aktualisierung erst nach minimiertem Browser Allgemeine Java-Themen 6
F Werte von Member-Variablen erst im Konstruktor setzen? Allgemeine Java-Themen 7
C externes Programm läuft erst nach schließen des mainprogramm Allgemeine Java-Themen 7
S [1/2done] Woher bekommt man libarys die es erst ab 1.6 gibt. Allgemeine Java-Themen 10
J Bibliotheken erst zur Laufzeit laden Allgemeine Java-Themen 5
N InputStream erst ab gegebener Position Allgemeine Java-Themen 4
bernd java.util.Scanner erst ab Java 1.5? Allgemeine Java-Themen 4
A Collections HashMap.containsKey findet keine immutablen Objekte Allgemeine Java-Themen 3
S HashMap containsKey liefert immer false zurück Allgemeine Java-Themen 15
B HashMap.containsKey. Allgemeine Java-Themen 10
M String shuffeln, Anfang und Ende aber bleiben gleich Allgemeine Java-Themen 15
P Wird double und float auf jedem Computer gleich berechnet? Allgemeine Java-Themen 10
A Datentypen Gregorian Calendar - 2 Daten sind gleich?? Allgemeine Java-Themen 3
U Set erklären dass objekte gleich sind Allgemeine Java-Themen 12
L Koordinaten des Mouselistener nicht überall gleich Allgemeine Java-Themen 13
R Panel mit 8 gleich großen "fenstern" Allgemeine Java-Themen 11
J Suche: Tool zum Auffinden gleichnamiger Klassen (Name und Package gleich) in unteschiedlichen JARs Allgemeine Java-Themen 5
woezelmann Object nach Deserialisierung nicht mehr gleich Allgemeine Java-Themen 13
R Font der auf allen Platformen gleich aussieht? Allgemeine Java-Themen 7
A Javakonsolenfenster geht gleich wieder zu Allgemeine Java-Themen 6
M CheckBox in JTable - ich verzweifle gleich Allgemeine Java-Themen 2
J MD5-Prüfsumme von ein und demselben String nicht gleich Allgemeine Java-Themen 3
P Kompletten Textseiten in gleich lange zeilen schneiden Allgemeine Java-Themen 7
K Date: getTime immer gleich Allgemeine Java-Themen 4
D Java gleich in Maschinensprache übersetzen? Allgemeine Java-Themen 23

Ähnliche Java Themen

Neue Themen


Oben