我有一个字符串列表,我希望在其中编写文件中不同的字符串集,并将其转换为UUID并将其存储为另一个变量。 是否可以使用Java 8 lambdas以及如何使用?
我要求两个收藏家的原因是为了避免将其运行到第二个循环中。
答案 0 :(得分:2)
正如@Holger所说,我写了一个pairing collector作为另一个聚集两个收藏家的问题的答案。现在我的StreamEx库中可以使用这样的收集器:MoreCollectors.pairing
。类似的收集器也是jOOL库中的available。
答案 1 :(得分:1)
这在引入Collectors.teeing
的{{3}}中是可能的:
public static <T, R1, R2, R>
Collector<T, ?, R> teeing(Collector<? super T, ?, R1> downstream1,
Collector<? super T, ?, R2> downstream2,
BiFunction<? super R1, ? super R2, R> merger);
返回一个收集器,该收集器由两个下游收集器组成。传递给结果收集器的每个元素都由两个下游收集器处理,然后使用指定的合并功能将它们的结果合并到最终结果中。
示例:
Entry<Long, Long> entry = Stream
.of(1, 2, 3, 4, 5)
.collect(teeing(
filtering(i -> i % 2 != 0, counting()),
counting(),
Map::entry));
System.out.println("Odd count: " + entry.getKey());
System.out.println("Total count: " + entry.getValue());