So erhöhen Sie den Wert von Map in einer Zeile in Java

Wie schreibe ich (Java 8 oder höher)

Wie schreibt man


map.merge(key, 1, Integer::sum);

Versuche dich zu bewegen

Illustrativ


jshell> Map<String, Integer> map = new HashMap<>();
map ==> {}

jshell> map.put("apple", 0);
$2 ==> null

jshell> map.get("apple");
$3 ==> 0

jshell> map.merge("apple", 1, Integer::sum);
$4 ==> 1

jshell> map.get("apple");
$5 ==> 1

jshell> map.merge("apple", 1, Integer::sum);
$6 ==> 2

jshell> map.get("apple");
$7 ==> 2

Warum?

Lassen Sie uns die Summenmethode von Integer und die Zusammenführungsmethode von Map untersuchen

Integer.sum

Es werden nur die beiden Argumente hinzugefügt.

sum public static int sum(int a, int b) Fügt zwei Ganzzahlen hinzu, wie den Operator +. Parameter: a - Erster Operand b - Zweiter Operand Rückgabewert: Summe von a und b Eingeführte Version: 1.8

Oracle-Dokumentation

Map.merge

default V merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction) Wenn der angegebene Schlüssel noch keinem Wert oder einem Wert zugeordnet ist, wird er dem angegebenen Wert ungleich Null zugeordnet. Andernfalls wird der relevante Wert durch das Ergebnis der angegebenen Neuzuordnungsfunktion ersetzt und entfernt, wenn das Ergebnis null ist.

Oracle-Dokumentation

Mit anderen Worten, das zweite Argument "Wert" ist der Standardwert, wenn es null ist, und wenn es nicht null ist, wird das Ergebnis der Funktion des dritten Arguments gesetzt.

Die Funktion mit dem dritten Argument akzeptiert ebenfalls zwei Argumente. Das erste Argument der Funktion des dritten Arguments ist der Wert für den Schlüssel. Das zweite Argument der Funktion des dritten Arguments ist der Wert, wenn der gleiche Wert wie das zweite Argument null ist.

[Java] Map # Merge ist schwer zu verstehen.

Ist es so, wenn Sie einer Variablen einen Namen geben?

map.merge(key, defaultValue, (value, defaultValue) -> function());

Mit anderen Worten?

map.merge (key, 1, Integer :: sum) behandelt den Standardwert wie einen Schritt (die in einem Prozess hinzugefügte Zahl) und fügt der Summe von Integer den Wert und den Standardwert mit einer Methodenreferenz hinzu. Ich bin.

Referenz

https://stackoverflow.com/questions/81346/most-efficient-way-to-increment-a-map-value-in-java

Wenn ich "Effective Java 3rd Edition" las, wurde diese Schreibmethode auch in Punkt 43 erwähnt. Auswählen einer Methodenreferenz über Lambda (P199).

Recommended Posts

So erhöhen Sie den Wert von Map in einer Zeile in Java
[Java] So erhalten Sie den Maximalwert von HashMap
So leiten Sie den letzten Tag des Monats in Java ab
[Java] So erhalten Sie den Schlüssel und den Wert, die in Map gespeichert sind, durch iterative Verarbeitung
So erhalten Sie das Datum mit Java
So ermitteln Sie die Länge einer Audiodatei mit Java
So ermitteln Sie die Gesamtzahl der Seiten beim Paging in Java
So ändern Sie den Wert einer Variablen an einem Haltepunkt in IntelliJ
So ermitteln Sie den absoluten Pfad eines in Java ausgeführten Verzeichnisses
Android-Entwicklung, wie man den Wert des JSON-Objekts auf null überprüft
So erstellen Sie Ihre eigene Anmerkung in Java und erhalten den Wert
[Java] So erhalten Sie die URL der Übergangsquelle
[Java] Verwendung von Map
Verwendung von Java Map
Zusammenfassung der Implementierung von Standardargumenten in Java
Bedingte Verzweigung des Ergebnisses einer SQL-Anweisung, die nur eine in Java durchsucht
So erhalten Sie den Klassennamen des Arguments von LoggerFactory.getLogger, wenn Sie SLF4J in Java verwenden
Zusammenfassung der Verwendung des im IE festgelegten Proxy-Sets bei der Verbindung mit Java
So erhalten Sie den Namen einer Klasse / Methode, die in Java ausgeführt wird
So rufen Sie den Hashwert in einem Array in Ruby ab
So ändern Sie den Einstellwert von Springboot Hikari CP
So wechseln Sie Java in der OpenJDK-Ära auf dem Mac
Wie man JAVA in 7 Tagen lernt
Wie verwende ich Klassen in Java?
So benennen Sie Variablen in Java
So verketten Sie Zeichenfolgen mit Java
So geben Sie ein Array für den Rückgabewert / das Rückgabeargument einer Methode in der CORBA IDL-Datei an
In Anbetracht der Einführung der Java-Sprache in der Reiwa-Ära ~ Auswahl eines sicheren SDK
Verstehen Sie, wie die funktionale Programmierung in Java auf einen Schlag eingeführt wurde
So geben Sie den Wert aus, wenn sich ein Array im Array befindet
Wie schreibe ich Ruby, wenn in einer Zeile Zusammenfassung vom Anfänger
Korrigieren Sie den Namen der Kriegsdatei auf den in Maven festgelegten
Die in /lib/calendars.properties von Java jre festgelegte Millisekunde ist UTC
So beheben Sie den unbekannten Fehler, der bei der Verwendung von slf4j in Java aufgetreten ist
So überprüfen Sie den Inhalt der Java-Zeichenfolge mit fester Länge
Ich möchte den Wert von Attribute in Selenium of Ruby ändern
Holen Sie sich das Ergebnis von POST in Java
So implementieren Sie die Datumsberechnung in Java
So implementieren Sie den Kalman-Filter mit Java
Mehrsprachige Unterstützung für Java Verwendung des Gebietsschemas
[Java] Verwendung der File-Klasse
Java-Referenz zum Verständnis in der Abbildung
[java] Zusammenfassung des Umgangs mit char
[Schienen] Verwendung der Kartenmethode
Schlüssel vom Wert in Java Map umkehren
So führen Sie eine Basiskonvertierung in Java durch
Studieren der Verwendung des Konstruktors (Java)
[Verarbeitung × Java] Verwendung der Schleife
So bestimmen Sie die Anzahl der Parallelen
[Java] So stellen Sie die Datums- und Uhrzeit auf 00:00:00 ein
[Java] So suchen Sie mit der Methode includes nach Werten in einem Array (oder einer Liste)
[Java] So erhalten Sie das aktuelle Verzeichnis
So erzwingen Sie Codierungskonventionen in Java
Einbetten von Janus Graph in Java
[Java] [Maven3] Zusammenfassung der Verwendung von Maven3
[Verarbeitung × Java] Verwendung der Klasse