Wie schreibt man
map.merge(key, 1, Integer::sum);
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
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
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.
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());
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.
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