Groupingby в потоках с помощью метода Collecting и Methon -> Как избавиться от необязательного, затем используйте MAX наJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Groupingby в потоках с помощью метода Collecting и Methon -> Как избавиться от необязательного, затем используйте MAX на

Сообщение Anonymous »

Похоже, я не совсем понимаю концепции группировки и коллекционеров и сортировки. Затем получите категорию с максимальным количеством и распечатайте его на картинке как строка с одной картой с верхним значением < /p>
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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»