У меня есть список Pocket
экземпляров
List<Pocket> pockets;
, где Pocket
класс выглядит следующим образом:
public class Pocket {
String name;
Double amount;
}
Пример списка карманов:
[
{"pocket1", 280},
{"pocket2", 320},
{"pocket3", 100},
{"pocket4", 125},
{"pocket5", 150},
{"pocket6", 175}
]
Мне нужно найти n
первых карманов, которые вместе могли бы дать N
(например, 650) из данного списка карманов.Если в последнем кармане amount
больше, чем необходимо, этот карман должен быть разбит на два кармана, а список результатов должен содержать только одну часть, которая вместе с предыдущими n - 1
карманами дает N
.
ДляНапример, мне нужно список карманов в порядке, как в списке источников, который дает сумму 650
.Обратите внимание, что карман 3-rd
был разбит, и в последнем кармане была возвращена только половина amount
:
[
{"pocket1", 280},
{"pocket2", 320},
{"pocket3", 50}
]
Как реализовать это с Java Streams
?