Commit 4c3c32eb by Patryk Czarnik

Grupowanie w oparciu o słownik

parent d07f1868
package sprzedaz;
import java.math.BigDecimal;
import java.util.*;
/* W tej wersji widzimy często stosowany schemat "grupowanie z wykorzystaniem słownika.
Korzystamy z operacji dostępnych od Java 5.
*/
public class Grupowanie1 {
public static void main(String[] args) {
List<Rekord> lista = ObslugaCSV.wczytaj();
Map<String, BigDecimal> slownik = new TreeMap<>();
for(Rekord r : lista) {
if(slownik.containsKey(r.miasto())) {
// to jest kolejny rekord z danego miasta → do obliczonej sumy dodajemy kolejny składnik
BigDecimal suma = slownik.get(r.miasto());
slownik.put(r.miasto(), suma.add(r.wartosc()));
} else {
// to jest pierwszy rekord z danego miasta → dodajemy pierwszy wpis
slownik.put(r.miasto(), r.wartosc());
}
}
// System.out.println(slownik);
// Przeglądanie zawartości słownika jako kluczy z wartościami
// wersja "Java 5":
for (Map.Entry<String, BigDecimal> entry : slownik.entrySet()) {
System.out.printf("%-10s : %12s%n", entry.getKey(), entry.getValue());
}
}
}
package sprzedaz;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
/* Operacja dostępna od Java 8: getOrDefault */
public class Grupowanie2 {
public static void main(String[] args) {
List<Rekord> lista = ObslugaCSV.wczytaj();
Map<String, BigDecimal> slownik = new TreeMap<>();
for(Rekord r : lista) {
BigDecimal suma = slownik.getOrDefault(r.miasto(), BigDecimal.ZERO);
slownik.put(r.miasto(), suma.add(r.wartosc()));
}
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