我有一个非常奇怪的问题,它有一些限制条件,使得解决起来很困难。我有一个列表的列表,我想对这些列表中的所有项目进行组合。每个项目都有一个名称和一个值。以下是一个例子:
主列表:
- 列表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
新列表基本上包含像哈希映射一样的项目。
限制条件如下:
1. 我不能将它们收集到新列表中并混合它们,因为这些列表可能会很快变得非常大。 2. 我正在使用某种类似观察者的API,因此我需要尽快让观察者知道结果,以便我不会使用太多内存。
换句话说,这个组合生成器可能被提供X个列表,每个列表可能包含N个项目,我必须在不使用太多内存的情况下生成它们的组合。
我不希望一次处理超过5个列表,但我希望使算法尽可能适应代码更改。
我正在用Java解决这个问题,但是该算法应该同样适用于其他编程语言,因为它可能会被翻译。
你有什么想法、建议吗?
提前感谢。
P.S. 我认为递归不会很好地工作。我正在考虑使用while循环和一些嵌套循环,但很难想象这应该如何工作。
主列表:
- 列表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
新列表基本上包含像哈希映射一样的项目。
限制条件如下:
1. 我不能将它们收集到新列表中并混合它们,因为这些列表可能会很快变得非常大。 2. 我正在使用某种类似观察者的API,因此我需要尽快让观察者知道结果,以便我不会使用太多内存。
换句话说,这个组合生成器可能被提供X个列表,每个列表可能包含N个项目,我必须在不使用太多内存的情况下生成它们的组合。
我不希望一次处理超过5个列表,但我希望使算法尽可能适应代码更改。
我正在用Java解决这个问题,但是该算法应该同样适用于其他编程语言,因为它可能会被翻译。
你有什么想法、建议吗?
提前感谢。
P.S. 我认为递归不会很好地工作。我正在考虑使用while循环和一些嵌套循环,但很难想象这应该如何工作。