Commit 7a0d122a by Patryk Czarnik

Collectors.groupingBy

parent 13b20945
package sprzedaz;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Grupowanie6 {
public static void main(String[] args) {
List<Rekord> lista = ObslugaCSV.wczytaj();
Map<String, List<Rekord>> grupy = lista.stream()
.collect(Collectors.groupingBy(Rekord::miasto));
// Tak wywołany kolektor groupingBy zwraca słownik, w którym dla każdej wartości klucz (czyli miasta)
// zapisana jest lista wszystkich obiektów należących do tej grupy (czyli rekordów z tego miasta).
// Tutaj też zoabczymy przeglądanie słownika z sposób oparty o wyrażenia lambda, od Java 8
grupy.forEach((miasto, rekordy) -> {
System.out.println("Miasto " + miasto + ", liczba transakcji: " + rekordy.size());
rekordy.forEach(r -> System.out.println(" * " + r.towar() + " za " + r.wartosc()));
System.out.println();
});
}
}
package sprzedaz;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Grupowanie8 {
public static void main(String[] args) {
List<Rekord> lista = ObslugaCSV.wczytaj();
// W tej wersji do kolektora groupingBy przekazujemy kolejny parametr,
// też kolektor mówiący "co robić każdą grupą".
Map<String, Double> sumy = lista.stream()
.collect(Collectors.groupingBy(Rekord::miasto,
Collectors.summingDouble(Rekord::wartoscDouble)));
// sumy.forEach((miasto, suma) -> System.out.printf("%-10s : %12s%n", miasto, suma));
sumy.forEach((miasto, suma) -> System.out.printf("%-10s : %12.2f%n", miasto, suma));
}
}
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