【发布时间】:2017-05-02 09:24:57
【问题描述】:
我有一个类包含特定项目的详细信息,如下所示:
Detail.class
Long detailsId;
Integer price;
List<Long> stackableDetails;
/*getters and setters*/
现在,我有一个如下示例数据集:
DetailId Price StackableDetails
------------------------------------------
1011 4$ 1012, 1014
1012 6$ 1011,1013
1013 10$ 1012
1014 8$ 1011
此数据集映射到 List sampleDetails。 现在,根据 stackableDetails 信息,我必须组合详细信息并从中选择具有最高价格的组合。
For eg,
In the data set available, the possible combinations would be
1011,1012,1014 - 4+6+8 = 18$
1012,1011,1013 - 6+4+10 = 20$
1013,1012 - 10+6 = 16$
1014,1011 - 8+4 = 12$
现在详细信息 1012,1011,1013 的组合产生 20 美元,因此我获取此组合并将其添加到我的结果列表中。如何在 java8 中实现这一点。
任何帮助表示赞赏。谢谢!
【问题讨论】:
-
您能否说明您希望如何进行组合以及如何选择“最佳”组合?
-
组合将基于 StackableDetails 中的值,并根据价格值的最高总和选择最佳组合。
-
您没有提供足够的信息来确定它是否是完美的复制品,但信息 here 应该可以帮助您
-
我想到的唯一解决方案是先通过并将所有 detailId、价格存储在地图中。在第二遍中,这次遍历 stackabledetails 列表,并通过每次从地图中提取价格来生成总和。我不确定这是否可行,您有什么建议吗?
-
您能详细说明完美复制的含义吗?
标签: collections java-8 java-stream