java - 将 java 7 迁移到 java 8 - 集合中的 forEach 和 addAll?
问题描述
我的java7代码:
String[] packagesName = ...
final Set<Class<?>> result = new HashSet<>();
for (final String packageName : packagesName) {
result.addAll(new Reflections(packageName, new SubTypesScanner(false)).getSubTypesOf(Step.class));
}
return result;
我尝试使用stream
+ flatMap
+ map
+collect
packagesName.stream().flatMap(packageName -> new Reflections(packageName, new SubTypesScanner(false)).getSubTypesOf(Step.class)).collect(...??
解决方案
flatMap
需要一个返回流作为参数的函数
return packagesName.stream()
.flatMap(packageName -> new Reflections(packageName,
new SubTypesScanner(false)).getSubTypesOf(Step.class).stream())
.collect(Collectors.toSet());
推荐阅读
- pandas - 如何选择groupby方法中的最后一个值
- python - 为什么 scipy.optimize 失败时说它成功了?
- r - 如何在 Shiny 的单独文件中定义 UI 输入?
- c# - 在 c ++ 库中使用 cythonized python 时的内存泄漏
- mysql - 尝试获取最新记录时在 on 子句中获取未知列
- php - Laravel 调用未定义的方法 App\Seo::mapInto()
- .net - confluent-kafka-dotnet - 提交异步
- c# - 我想为我的机器人更改 Discord 服务器中的游戏活动,我该怎么做?
- java - Log4j2 没有像指定的那样格式化输出/我认为没有添加附加程序
- python-3.x - 在 Windows 上构建 twisted[tls] 失败?