Commit ebfea6a5 by Patryk Czarnik

Metody obliczające wartość transakcji w rekordzie

parent 6f0aec66
......@@ -12,4 +12,17 @@ import java.time.LocalDate;
- toString, equals i hashCode (przypominające standardowe implementacje generowane przez IDE)
*/
public record Rekord(LocalDate data, String miasto, String sklep, String kategoria, String towar, BigDecimal cena, int sztuk) {
// W rekordach można definiować dodatkowe metody. Duży sens mają takie, które zwracają wyniki obliczone na podstawie wartości pól
public BigDecimal wartosc() {
return cena.multiply(BigDecimal.valueOf(sztuk));
}
public double wartoscDouble() {
return wartosc().doubleValue();
}
public int rok() {
return data.getYear();
}
}
......@@ -13,14 +13,14 @@ public class SumaWJednymMiescie_Funkcyjnie {
// wersja BigDecimal
BigDecimal suma = lista.stream()
.filter(r -> miasto.equalsIgnoreCase(r.miasto()))
.map(r -> r.cena().multiply(BigDecimal.valueOf(r.sztuk())))
.map(Rekord::wartosc)
.reduce(BigDecimal.ZERO, BigDecimal::add)
;
// wersja double
double sumaD = lista.stream()
.filter(r -> miasto.equalsIgnoreCase(r.miasto()))
.mapToDouble(r -> r.cena().doubleValue() * r.sztuk())
.mapToDouble(Rekord::wartoscDouble)
.sum();
JOptionPane.showMessageDialog(null,
......
......@@ -18,7 +18,7 @@ public class SumaWJednymMiescie_Imperatywnie {
BigDecimal suma = BigDecimal.ZERO;
for(Rekord r : lista) {
if(miasto.equalsIgnoreCase(r.miasto())) {
suma = suma.add(r.cena().multiply(BigDecimal.valueOf(r.sztuk())));
suma = suma.add(r.wartosc());
}
}
......@@ -26,7 +26,7 @@ public class SumaWJednymMiescie_Imperatywnie {
double sumaD = 0;
for(Rekord r : lista) {
if(miasto.equalsIgnoreCase(r.miasto())) {
sumaD += r.cena().doubleValue() * r.sztuk();
sumaD += r.wartoscDouble();
}
}
......
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