Commit d633cd63 by Patryk Czarnik

Przykłady "sprzedaz"

parent 75604fd2
package sprzedaz.obiektowo;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class P4_Grupowanie_v1 {
// pierwsze podjeście - zbieram nazwy miast bez powtórzeń i następnie dla każdego miasta
// wyliczam sumę sposobem takim, jak w P2
// Wada: wielokrotnie przeglądam całą listę
public static void main(String[] args) {
List<Transakcja> transakcje = ObslugaCSV.wczytaj("sprzedaz.csv");
Set<String> miasta = new TreeSet<>();
for(Transakcja transakcja : transakcje) {
miasta.add(transakcja.getMiasto());
}
for(String miasto : miasta) {
double suma = 0;
for(Transakcja transakcja : transakcje) {
if(transakcja.getMiasto().equals(miasto)) {
suma += transakcja.getWartoscDouble();
}
}
System.out.printf("| %-10s | %11.2f |\n", miasto, suma);
}
}
}
package sprzedaz.obiektowo;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class P4_Grupowanie_v2 {
// drugie podjeście - dane przeglądam tylko raz, a liczby dodaję od razu do słownika pod odpowiednim kluczem
public static void main(String[] args) {
List<Transakcja> transakcje = ObslugaCSV.wczytaj("sprzedaz.csv");
Map<String, Double> sumy = new HashMap<>();
for(Transakcja transakcja : transakcje) {
if(sumy.containsKey(transakcja.getMiasto())) {
// update
double ileBylo = sumy.get(transakcja.getMiasto());
sumy.put(transakcja.getMiasto(), ileBylo + transakcja.getWartoscDouble());
} else {
// insert
sumy.put(transakcja.getMiasto(), transakcja.getWartoscDouble());
}
}
for(Map.Entry<String, Double> entry : sumy.entrySet()) {
System.out.printf("| %-10s | %11.2f |\n", entry.getKey(), entry.getValue());
}
}
}
package sprzedaz.obiektowo;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class P4_Grupowanie_v3 {
// w tej wersji używam operacji getOrDefault, która pojawiła się w Java 8
// dzięki temu nie trzeba if-em rozróżniać sytuacji gdy to jest pierwsze lub kolejne wystąpienie danego miatsa
public static void main(String[] args) {
List<Transakcja> transakcje = ObslugaCSV.wczytaj("sprzedaz.csv");
Map<String, Double> sumy = new HashMap<>();
for(Transakcja transakcja : transakcje) {
double ileBylo = sumy.getOrDefault(transakcja.getMiasto(), 0.0);
sumy.put(transakcja.getMiasto(), ileBylo + transakcja.getWartoscDouble());
}
for(Map.Entry<String, Double> entry : sumy.entrySet()) {
System.out.printf("| %-10s | %11.2f |\n", entry.getKey(), entry.getValue());
}
}
}
package sprzedaz.obiektowo;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class P4_Grupowanie_v4 {
// w tej wersji używam operacji merge, która pojawiła się w Java 8
public static void main(String[] args) {
List<Transakcja> transakcje = ObslugaCSV.wczytaj("sprzedaz.csv");
Map<String, Double> sumy = new HashMap<>();
for(Transakcja transakcja : transakcje) {
sumy.merge(transakcja.getMiasto(), transakcja.getWartoscDouble(), Double::sum);
// jeśli wpisu pod tym kluczem jeszcze nie ma → wstawia podaną wartość
// jeśli wpis już jest → aktualizuje wartość za pomocą wskzanej funkcji (tutj add czyli dodawanie) i podanej wartości
}
for(Map.Entry<String, Double> entry : sumy.entrySet()) {
System.out.printf("| %-10s | %11.2f |\n", entry.getKey(), entry.getValue());
}
}
}
package sprzedaz.strumieniowo;
import java.util.List;
public class B1_WypiszWszystko {
public static void main(String[] args) {
List<Transakcja> lista = ObslugaCSV.wczytaj("sprzedaz.csv");
lista.forEach(tr -> System.out.println(tr.getTowar() + " " + tr.getSztuk() + " szt. w mieście " + tr.getMiasto()));
}
}
package sprzedaz.strumieniowo;
import java.util.List;
public class B2_WypiszZMiasta {
public static void main(String[] args) {
List<Transakcja> lista = ObslugaCSV.wczytaj("sprzedaz.csv");
lista.stream()
.filter(tr -> "Katowice".equals(tr.getMiasto()))
.forEach(tr -> System.out.println(tr));
}
}
package sprzedaz.strumieniowo;
import java.util.Comparator;
import java.util.List;
public class B3_FilterMap {
public static void main(String[] args) {
List<Transakcja> lista = ObslugaCSV.wczytaj("sprzedaz.csv");
// filter sprawdza warunek logiczny i "przepuszcza dalej" tylko obiekty spełniające ten warunek
// map wywołuje podaną metodę na obiekcie i wynik tego wywołania wstawia w miejsce obiektu;
// wynikiem mapowania jest strumień składający się z wyników podanej operacji
// forEach - robi coś dla każdego elementu strumienia
lista.stream()
.filter(tr -> "Katowice".equals(tr.getMiasto()))
.sorted(Comparator.comparing(Transakcja::getWartosc).reversed())
.map(tr -> " * sprzedano " + tr.getSztuk() + " towaru " + tr.getTowar() + " za " + tr.getWartosc())
.forEach(System.out::println);
}
}
package sprzedaz.strumieniowo;
import java.util.List;
public class P0_Odczyt {
public static void main(String[] args) {
List<Transakcja> transakcje = ObslugaCSV.wczytaj("sprzedaz.csv");
// lambda expression
// transakcje.forEach(tr -> System.out.println(tr));
// równoważna operacja zapisana za pomocą
// method reference
transakcje.forEach(System.out::println);
}
}
package sprzedaz.strumieniowo;
import java.util.List;
public class P1_WypiszWybranePola {
public static void main(String[] args) {
List<Transakcja> transakcje = ObslugaCSV.wczytaj("sprzedaz.csv");
transakcje.forEach(tr -> System.out.println(tr.getMiasto()
+ ", " + tr.getSztuk() + " sztuk towaru " + tr.getTowar()));
}
}
package sprzedaz.strumieniowo;
import java.util.List;
public class P1_WypiszWybranePola_v2 {
public static void main(String[] args) {
List<Transakcja> transakcje = ObslugaCSV.wczytaj("sprzedaz.csv");
transakcje.stream()
.map(tr -> String.format("W mieście %s sprzedano %d sztuk towaru %s",
tr.getMiasto(), tr.getSztuk(), tr.getTowar()))
.forEach(System.out::println);
}
}
package sprzedaz.strumieniowo;
import javax.swing.*;
import java.util.List;
public class P2_SumaZWybranegoMiasta {
public static void main(String[] args) {
List<Transakcja> transakcje = ObslugaCSV.wczytaj("sprzedaz.csv");
String miasto = JOptionPane.showInputDialog("Podaj nazwę miasta:");
double suma = transakcje.stream()
.filter(tr -> tr.getMiasto().equals(miasto))
.mapToDouble(Transakcja::getWartoscDouble)
.sum();
JOptionPane.showMessageDialog(null, "Suma wynosi " + suma);
}
}
package sprzedaz.strumieniowo;
import javax.swing.*;
import java.math.BigDecimal;
import java.util.List;
import java.util.Objects;
public class P2_SumaZWybranegoMiasta_BD {
public static void main(String[] args) {
List<Transakcja> transakcje = ObslugaCSV.wczytaj("sprzedaz.csv");
String miasto = JOptionPane.showInputDialog("Podaj nazwę miasta:");
BigDecimal suma =
transakcje.stream()
.filter(tr -> Objects.equals(tr.getMiasto(), miasto))
.map(Transakcja::getWartosc)
.reduce(BigDecimal.ZERO, BigDecimal::add);
JOptionPane.showMessageDialog(null, "Suma wynosi " + suma);
}
}
package sprzedaz.strumieniowo;
import javax.swing.*;
import java.util.List;
public class P2_SumaZWybranegoMiasta_reduce {
public static void main(String[] args) {
List<Transakcja> transakcje = ObslugaCSV.wczytaj("sprzedaz.csv");
String miasto = JOptionPane.showInputDialog("Podaj nazwę miasta:");
double suma = transakcje.stream()
.filter(tr -> tr.getMiasto().equals(miasto))
.mapToDouble(Transakcja::getWartoscDouble)
.reduce(0.0, Double::sum);
JOptionPane.showMessageDialog(null, "Suma wynosi " + suma);
}
}
package sprzedaz.strumieniowo;
import javax.swing.*;
import java.util.List;
public class P2_SumaZWybranegoMiasta_reduce_lambda {
public static void main(String[] args) {
List<Transakcja> transakcje = ObslugaCSV.wczytaj("sprzedaz.csv");
String miasto = JOptionPane.showInputDialog("Podaj nazwę miasta:");
double suma = transakcje.stream()
.filter(tr -> tr.getMiasto().equals(miasto))
.mapToDouble(Transakcja::getWartoscDouble)
.reduce(0.0, (x,y) -> x+y);
JOptionPane.showMessageDialog(null, "Suma wynosi " + suma);
}
}
package sprzedaz.strumieniowo;
import java.util.List;
public class P3_Miasta_v1 {
public static void main(String[] args) {
List<Transakcja> transakcje = ObslugaCSV.wczytaj("sprzedaz.csv");
transakcje.stream()
.map(Transakcja::getMiasto)
.distinct()
.sorted()
.forEach(System.out::println);
}
}
package sprzedaz.strumieniowo;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import java.util.stream.Collectors;
public class P3_Miasta_v2 {
public static void main(String[] args) {
List<Transakcja> transakcje = ObslugaCSV.wczytaj("sprzedaz.csv");
Collection<String> miasta = transakcje.stream()
.map(Transakcja::getMiasto)
.collect(Collectors.toSet());
miasta.forEach(System.out::println);
}
}
package sprzedaz.strumieniowo;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
public class P3_Miasta_v3 {
public static void main(String[] args) {
List<Transakcja> transakcje = ObslugaCSV.wczytaj("sprzedaz.csv");
Map<String, Integer> mapa = transakcje.stream()
.map(Transakcja::getMiasto)
.collect(Collectors.toMap(Function.identity(), x -> 1, Integer::sum));
mapa.forEach((k, v) -> {
System.out.println(k + ": " + v);
});
}
}
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