I watched a lot of different permutation messages in Java, but none of them matched my score, so I decided to post.
So, I have 2 List<Integer>
, and I need to generate all pairs of permutations 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 the 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 could not find any library to do something even remotely, I found that guava
has something similar to Permutations
, but it seems to have been stopped recently or something like that.
In addition, I would like not to store the list in memory, since it can be quite large, I only need to iterate through the pairs one at a time, so I'm trying to find ways to generate them on the fly . I was thinking of implementing an Iterable<Pair>
, but it seems like I can't write anything that looks effective.
If you know libraries that already do such things that are also very useful!