我有一个非常奇怪的问题,它有一些难以解决的限制。我有一个列表列表,我想对这些列表中的所有项目进行组合。每个项目都有一个名称和一个值。这是一个例子:
主要清单:
- 清单 01:
- 项目 01:名称:name01,值:value01
- 项目 02:名称:name02,值:value02
- 清单 02:
- 项目 01:名称:name03,值:value03
- 清单 03:
- 项目 01:名称:name04,值:value04
- 项目 02:名称:name05,值:value05
最终结果应如下所示:
一些清单:
- 项目 01:name01:value01、name03:value03、name04:value04
- 项目 02:name02:value02、name03:value03、name04:value04
- 项目 03:name03:value03、name03:value03、name04:value04
- 项目 04:name01:value01、name03:value03、name04:value05
- 项目 05:name02:value02、name03:value03、name04:value05
- 项目 06:name03:value03、name03:value03、name04:value05
新列表几乎包含类似于哈希映射的项目。
约束如下:
- 我无法收集到新列表并将它们混合,因为这些列表可能会很快变得很大。
- 我正在使用某种类似观察者的 api,所以我需要尽快让观察者了解结果,这样我就不会使用太多内存。
换句话说,这个组合生成器可能会收到 X 个列表,每个列表可以包含 N 个项目,我必须在不使用太多内存的情况下生成它们的组合。
我不希望一次处理超过 5 个列表,但我想让算法尽可能地适应代码更改。
我正在用 java 解决这个问题,但该算法在其他语言中也应该同样有效,因为它可能会被翻译。
你有什么想法、建议吗?
提前致谢。
PS我不认为递归会很好用。我正在玩弄使用while循环和一些嵌套循环的想法,但是很难想象它应该如何工作。