Commit f9763861 by Patryk Czarnik

Optional

parent c5bfd1f7
package sprzedaz;
import javax.swing.*;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
public class Opt1 {
public static void main(String[] args) {
List<Rekord> lista = ObslugaCSV.wczytaj();
String miasto = JOptionPane.showInputDialog("Podaj miasto");
Optional<Rekord> wynik = lista.stream()
.filter(r -> r.miasto().equalsIgnoreCase(miasto))
.max(Comparator.comparing(Rekord::wartosc));
System.out.println("Obiekt wynikowy: " + wynik);
// sposoby obsługi Optionala
// klasyczny if
if(wynik.isPresent()) {
Rekord r = wynik.get();
JOptionPane.showMessageDialog(null,
"Transakcja z dnia " + r.data() + " o wartości " + r.wartosc()
+ "\n" + r.sztuk() + " sztuk towaru " + r.towar());
} else {
JOptionPane.showMessageDialog(null, "Nie ma transakcji w mieście " + miasto,
"Brak danych", JOptionPane.ERROR_MESSAGE);
}
}
}
package sprzedaz;
import javax.swing.*;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
public class Opt2 {
public static void main(String[] args) {
List<Rekord> lista = ObslugaCSV.wczytaj();
String miasto = JOptionPane.showInputDialog("Podaj miasto");
// Tutaj operacja max zwraca Optional i od razu stosujemy operację ifPresent
// Kod podany w ifPresent wykona się tylko jeśli wynik został znaleziony
// lista.stream()
// .filter(r -> r.miasto().equalsIgnoreCase(miasto))
// .max(Comparator.comparing(Rekord::wartosc))
// .ifPresent(r -> JOptionPane.showMessageDialog(null,
// "Transakcja z dnia " + r.data() + " o wartości " + r.wartosc()
// + "\n" + r.sztuk() + " sztuk towaru " + r.towar()));
lista.stream()
.filter(r -> r.miasto().equalsIgnoreCase(miasto))
.max(Comparator.comparing(Rekord::wartosc))
.ifPresentOrElse(
r -> JOptionPane.showMessageDialog(null,
"Transakcja z dnia " + r.data() + " o wartości " + r.wartosc()
+ "\n" + r.sztuk() + " sztuk towaru " + r.towar())
, () -> JOptionPane.showMessageDialog(null, "Nie ma transakcji w mieście " + miasto,
"Brak danych", JOptionPane.ERROR_MESSAGE)
);
}
}
package sprzedaz;
import javax.swing.*;
import java.util.Comparator;
import java.util.List;
public class Opt3 {
public static void main(String[] args) {
List<Rekord> lista = ObslugaCSV.wczytaj();
String miasto = JOptionPane.showInputDialog("Podaj miasto");
// Operacja map wykonana na obiekcie Optional zwraca w wyniku Optional
// W tym przypadku z Optional<Rekord> powstaje Optional<String>
// który jest pusty, jeśli ten pierwszy był pusty, a jest "pełny", jeśli Optipnal<Rekord> zawierał dane
String tekst = lista.stream()
.filter(r -> r.miasto().equalsIgnoreCase(miasto))
.max(Comparator.comparing(Rekord::wartosc))
.map(r -> "Transakcja z dnia " + r.data() + " o wartości " + r.wartosc()
+ "\n" + r.sztuk() + " sztuk towaru " + r.towar())
.orElse("Nie znaleziono rekordów w podanym mieście");
JOptionPane.showMessageDialog(null, tekst);
}
}
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