3 Klassen aus (2 Datensätze: Produkt & Reihenfolge + Haupt). Im Main gibt es eine Liste. Neue Bestellungen < /p>
Klasse Produkt: < /p>
public record Product(String name, BigDecimal price, String category)
< /code>
Klasse Order: < /p>
public record Order(Product product, int quantity, BigDecimal discount)
public BigDecimal priceWithDiscount(){
return product.price().multiply(BigDecimal.ONE.subtract(discount));
}
< /code>
Klasse Haupt < /p>
List orders = List.of(
new Order(new Product("chleb", new BigDecimal(5), "A"),10, new BigDecimal("0.1")),
new Order(new Product("maslo", new BigDecimal(6), "A"),5, new BigDecimal("0.2")),
new Order(new Product("szynka", new BigDecimal(25), "B"),10, new BigDecimal("0")),
new Order(new Product("kielbasa", new BigDecimal(16),"C"),5, new BigDecimal("0")),
new Order(new Product("woda", new BigDecimal(3),"B"),15, new BigDecimal("0.1")),
new Order(new Product("ocet", new BigDecimal(3),"A"),8, new BigDecimal("0.3")),
new Order(new Product("margaryna", new BigDecimal(4),"B"),12, new BigDecimal("0.5")),
new Order(new Product("maslo", new BigDecimal(8),"C"),5, new BigDecimal("0.2"))
)
< /code>
Unter meiner Implementierung der Gruppierung: < /p>
Map summedQuantitiesPerCategory = orders //no 1.
.stream()
.collect(Collectors.groupingBy(p -> p.product().category(),
Collectors.collectingAndThen(
Collectors.mapping(p -> p.quantity(), Collectors.toList()),
quantity -> quantity.stream().reduce((x, y) -> x + y)
)));
summedQuantitiesPerCategory
.entrySet()
.stream()
.sorted(Comparator.comparing(p -> p.getValue())) // no2.
.limit(1);
< /code>
Fragen: < /p>
- So werden Sie dieses optionale Anteil und sehen Sie nur Ganzzahl als Wert in der Karte. Dann wäre es einfach zu sortieren. Ich denke, < /li>
Wie man die Karte mithilfe der Methode sortiert oder etwas Einfacheres wie z. max?