我有两个说法:
ImmutableSet<String> firstSet = ImmutableSet.of("1","2","3");
ImmutableSet<String> secondSet = ImmutableSet.of("a","b","c");
我想得到一个集合,该集合由第一个集合的元素与第二个集合的每个元素串联在一起,以及一个定界符,即输出应为:
ImmutableSet<String> thirdSet = ImmutableSet.of("1.a","1.b","1.c","2.a","2.b","2.c","2.c","3.a","3.b","3.c");
(这是我的定界符“。”)
我最初以为我可以通过流传输第一组并应用第二组Collectors.joining()
的元素来做到这一点,但这并不能解决我的需要。
看来您正在使用番石榴。在这种情况下,您只需使用Sets.cartesianProduct
方法
Set<List<String>> cartesianProduct = Sets.cartesianProduct(firstSet,secondSet);
for (List<String> pairs : cartesianProduct) {
System.out.println(pairs.get(0) + "." + pairs.get(1));
}
输出:
1.a
1.b
1.c
2.a
2.b
2.c
3.a
3.b
3.c
如果您想收集它,ImmutableSet<String>
可以使用
ImmutableSet<String> product = ImmutableSet.copyOf(
cartesianProduct.stream()
.map(pairs -> pairs.get(0) + "." + pairs.get(1))
.toArray(String[]::new)
);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句