【发布时间】:2019-02-27 08:57:52
【问题描述】:
我有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实现?
【问题讨论】:
-
你已经在没有流的情况下完成了吗?
-
我认为您的意思是总和为 650 的口袋列表,您尝试过什么?
-
您的要求不清楚。你想:1)总和直到金额超过650? 2) 将 650 个第一口袋相加? 3) 找出总和为 650 的口袋组合?
标签: java lambda collections java-8 java-stream