I’ve been looking at a lot of different posts about permutations in Java, but none of them did fit my bill so I decided to post.
So I have 2 List<Integer>, and I need to generate all permutation pairs with no duplicates where one element of the pair is in the first list and the second one in the second list.
For example, if I have:
List<Integer> l1 = Arrays.asList(new Integer[] {1, 2, 3});
List<Integer> l1 = Arrays.asList(new Integer[] {2, 3, 4});
Then I want in output:
(1, 2), (1, 3), (1, 4), (2, 2), (2, 3), (2, 4), (3, 3), (3, 4)
Note that (3, 2) is not here since I already have (2, 3)
I couldn’t find any library to do something even remotely close, I found that guava had something similar with Permutations but it seems to have been discontinued recently or something.
Also, I would like to not have to store the list in memory as it can be quite large, I only need to iterate on the pairs one at a time, so I’m trying to find ways to generate them on the fly. I was thinking to implement an Iterable<Pair> but I can’t seem to be able to write anything that looks efficient.
If you know libraries that already do this kind of stuff that would be very helpful as well !
How about
Output