我在Java中使用for-each构造,如下所示:
public int getNumRStations() {
int numRoutes = 0;
for (ArrayList<Route> route : routes) {
numRoutes += route.size();
}
return numRoutes;
}
NetBeans显示警告/通知,内容为“可以使用功能性操作”。自动解决后,新生成的代码将显示以下内容:
public int getNumRStations() {
int numRoutes = 0;
numRoutes = routes.stream().map((route) -> route.size()).reduce(numRoutes, Integer::sum);
return numRoutes;
}
最佳答案
看起来NetBeans建议将您的sum操作重构为Java 8“lambda”或使用map的函数编程操作,并从Stream接口(interface)简化函数。您必须将Java 8 JDK与NetBeans一起使用。
分解正在做什么:
route
数组列表routes
大小进行计数Java(8)文档中针对流接口(interface)可用的at this link记录了map()和reduce()函数
该答案针对“它是什么”,但没有针对“为什么更好”。我承认我自己仍然会学习这些构造。