我一直在看很多关于 Java 排列的不同帖子,但没有一个符合我的要求,所以我决定发布。
所以我有 2 List<Integer>
,我需要生成没有重复的所有排列对,其中对的一个元素在第一个列表中,第二个在第二个列表中。
例如,如果我有:
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>
但我似乎无法编写任何看起来有效的东西。
如果你知道图书馆已经在做这种事情,那也会很有帮助!