Int in einer Hashmap erhöhen?
Ich arbeite gerade an einem Plugin mit welchem man ausdauer mit Angriffen verbraucht. Um die Ausdauer auf Spieler/innen anzuwenden habe ich folgenden Code benutzt: (Das Event heißt "e")
Player p = e.getPlayer;
HashMap<String , Integer> sterminaPlayer = new HashMap<String ,Integer>();
sterminaPlayer.put(p.getName(), //Hier soll addiert werden);
(Den Int habe ich bereits in einem Join Event auf 50 gesetz!)
Wie kann ich den Int in der HashMap addieren
1 Antwort
Z.B. so (das Wort heißt "stamina", nicht "stermina"):
staminaPlayer.merge(p.getName(), 1, Integer::sum);
Für 1 natürlich den gewünschten Wert einsetzen. Das Schöne an diesem Einzeiler ist, dass er auch zuverlässig funktioniert wenn der Wert noch gar nicht gesetzt ist: ist der Wert nicht gesetzt, wird 1 reingeschrieben. Ist er schon gesetzt, wird die gegebene Funktion (in diesem Fall Integer::sum) mit dem bestehenden Wert und 1 angewendet und das Resultat reingeschrieben.
Im Prinzip ja, du addierst halt einen negativen Wert oder machst es so:
staminaPlayer.computeIfPresent(p.getName(), (k, v) -> v - 1);
Und so nebenbei: du solltest statt mit HashMap stets mit dem Map-Interface arbeiten und kannst die Instanziierung deiner Map spürbar vereinfachen. Deine Java-Entwicklungsumgebung wird dich aber hoffentlich darauf hinweisen.
Map<String, Integer> staminaPlayer = new HashMap<>();
wenn du mit vanilla eclipse arbeitest wirst du nicht drauf hingewiesen
Danke!!!
Funktioniert das genauso mit subtrahieren?