3 классы (2 записи: продукт и заказ + main). В основном есть список новых заказов < /p>
Продукт класса: < /p>
public record Product(String name, BigDecimal price, String category)
< /code>
Заказ класса: < /p>
public record Order(Product product, int quantity, BigDecimal discount)
public BigDecimal priceWithDiscount(){
return product.price().multiply(BigDecimal.ONE.subtract(discount));
}
< /code>
класс Main < /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>
ниже моей реализации группировки: < /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>
Вопросы: < /p>
- Как избавиться от этого необязательного и рассматривать только целое число как значение на карте. Тогда было бы легко сортировать, я думаю, < /li>
Как сортировать карту с помощью значения, используя метод, отсортированный или что -то более простое, например, например, Макс?
Подробнее здесь: https://stackoverflow.com/questions/642 ... of-optiona