【发布时间】:2016-11-20 22:38:51
【问题描述】:
我有一个相当大的流管道,因此希望保持清洁。我有更大的管道的以下部分
Integer defaultInt;
//...
Stream<Integer> ints;
ints.filter(/* predicate_goes_here */).collect(toSingletonIfEmptyCollector);
如果 toSingletonIfEmptyCollector 返回非 emtpy 列表,则 toSingletonIfEmptyCollector 的行为与 Collectors.toList() 的行为相同,如果 Collectors.toList() 返回空列表,则 Collections.singletonList(defaultInt) 的行为相同。
有没有更短的方法来实现它(例如,通过组合 JDK 中提供的标准收集器)而不是从头开始实现所有 Collector 的方法?
【问题讨论】:
-
我假设你不会改变结果列表。
-
在
IntStream和Stream<Integer>中可能有很多帮助方法。 注意:IntStream是一个原始流(只是一个小提示)
标签: java java-8 java-stream collectors