Commit 13b20945 by Patryk Czarnik

merge

parent c7e7fbba
......@@ -15,8 +15,8 @@ public class Grupowanie3 {
for(Rekord r : lista) {
slownik.putIfAbsent(r.miasto(), BigDecimal.ZERO);
BigDecimal suma = slownik.get(r.miasto());
slownik.put(r.miasto(), suma.add(r.wartosc()));
slownik.computeIfPresent(r.miasto(), (k, suma) -> suma.add(r.wartosc()));
// Funkcja na podstawie klucza i starej wartości ma zwrócić nową wartość.
}
for (Map.Entry<String, BigDecimal> entry : slownik.entrySet()) {
......
package sprzedaz;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
/* Operacja "funkcyjna" na słownikach dostępna od Java 8: merge
Jest to operacja dokładnie implementująca ten schemat, który realizujemy w naszym zadaniu.
slownik.merge(KLUCZ, WARTOŚĆ, FUNKCJA)
Jeśli pod KLUCZem jeszcze niczego nie ma, to wpisywana jest WARTOŚĆ
Jeśli pod KLUCZem jest już STARA_WARTOŚĆ, to uruchamiana jest FUNKCJA
NOWA_WARTOŚĆ := FUNKCJA(STARA_WARTOŚĆ, WARTOŚĆ)
np. jeśli funkcją jest operacja dodawania, to będzie tak:
NOWA_WARTOŚĆ := STARA_WARTOŚĆ + WARTOŚĆ
*/
public class Grupowanie4 {
public static void main(String[] args) {
List<Rekord> lista = ObslugaCSV.wczytaj();
Map<String, BigDecimal> slownik = new TreeMap<>();
for(Rekord r : lista) {
slownik.merge(r.miasto(), r.wartosc(), BigDecimal::add);
}
for (Map.Entry<String, BigDecimal> entry : slownik.entrySet()) {
System.out.printf("%-10s : %12s%n", entry.getKey(), entry.getValue());
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment