我一直在查看很多关于 Java 排列的不同帖子,但没有一个符合我的要求,所以我决定发布。
所以我有 2List<Integer>
,我需要生成所有排列对 with 没有重复项其中该对的一个元素位于第一个列表中,第二个元素位于第二个列表中。
例如,如果我有:
List<Integer> l1 = Arrays.asList(new Integer[] {1, 2, 3});
List<Integer> l1 = Arrays.asList(new Integer[] {2, 3, 4});
然后我想要输出:
(1, 2), (1, 3), (1, 4), (2, 2), (2, 3), (2, 4), (3, 3), (3, 4)
请注意,(3, 2) 不在这里,因为我已经有了 (2, 3)
我找不到任何图书馆可以做一些即使是远程接近的事情,我发现guava
有类似的东西Permutations
不过最近好像停产了什么的。
另外,我不想将列表存储在内存中,因为它可能非常大,我只需要一次迭代一对,所以我正在尝试找到生成它们的方法在飞行中。我正在考虑实施一个Iterable<Pair>
但我似乎无法写出任何看起来有效的东西。
如果您知道已经在做此类事情的图书馆,那也会非常有帮助!