Commit ebfea6a5 by Patryk Czarnik

Metody obliczające wartość transakcji w rekordzie

parent 6f0aec66
...@@ -12,4 +12,17 @@ import java.time.LocalDate; ...@@ -12,4 +12,17 @@ import java.time.LocalDate;
- toString, equals i hashCode (przypominające standardowe implementacje generowane przez IDE) - 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) { 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 { ...@@ -13,14 +13,14 @@ public class SumaWJednymMiescie_Funkcyjnie {
// wersja BigDecimal // wersja BigDecimal
BigDecimal suma = lista.stream() BigDecimal suma = lista.stream()
.filter(r -> miasto.equalsIgnoreCase(r.miasto())) .filter(r -> miasto.equalsIgnoreCase(r.miasto()))
.map(r -> r.cena().multiply(BigDecimal.valueOf(r.sztuk()))) .map(Rekord::wartosc)
.reduce(BigDecimal.ZERO, BigDecimal::add) .reduce(BigDecimal.ZERO, BigDecimal::add)
; ;
// wersja double // wersja double
double sumaD = lista.stream() double sumaD = lista.stream()
.filter(r -> miasto.equalsIgnoreCase(r.miasto())) .filter(r -> miasto.equalsIgnoreCase(r.miasto()))
.mapToDouble(r -> r.cena().doubleValue() * r.sztuk()) .mapToDouble(Rekord::wartoscDouble)
.sum(); .sum();
JOptionPane.showMessageDialog(null, JOptionPane.showMessageDialog(null,
......
...@@ -18,7 +18,7 @@ public class SumaWJednymMiescie_Imperatywnie { ...@@ -18,7 +18,7 @@ public class SumaWJednymMiescie_Imperatywnie {
BigDecimal suma = BigDecimal.ZERO; BigDecimal suma = BigDecimal.ZERO;
for(Rekord r : lista) { for(Rekord r : lista) {
if(miasto.equalsIgnoreCase(r.miasto())) { 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 { ...@@ -26,7 +26,7 @@ public class SumaWJednymMiescie_Imperatywnie {
double sumaD = 0; double sumaD = 0;
for(Rekord r : lista) { for(Rekord r : lista) {
if(miasto.equalsIgnoreCase(r.miasto())) { 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