Iterable.forEach
和 Map.forEach
调用。
示例:
String joinNonEmpty(List<String> list) {
return list.stream() // 流可以转换为循环
.filter(s -> !s.isEmpty())
.map(String::trim)
.collect(Collectors.joining(", "));
}
在应用快速修复后:
String joinNonEmpty(List<String> list) {
StringJoiner joiner = new StringJoiner(", ");
for (String s : list) {
if (!s.isEmpty()) {
String trim = s.trim();
joiner.add(trim);
}
}
return joiner.toString();
}
请注意,有时此检查可能会导致轻微的语义变化。 必须特别注意短路,因为流短路未指定读取的实际元素数。
配置检查:
使用 通过 Stream.iterator() 迭代未知的流源 选项来建议转换来源无法识别的流。 在这种情况下,迭代器将从流中创建。 例如,选择复选框时,此处将建议转换:
List<ProcessHandle> handles = ProcessHandle.allProcesses().collect(Collectors.toList());
在这种情况下,结果如下:
List<ProcessHandle> handles = new ArrayList<>();
for (Iterator<ProcessHandle> it = ProcessHandle.allProcesses().iterator(); it.hasNext(); ) {
ProcessHandle allProcess = it.next();
handles.add(allProcess);
}
2017.1 的新功能