作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想让这个函数运行的时间更少。我假设 stream()
可能有帮助。但不确定如何。
private List<TodayMenu> getRecommendedTodayMenuItems(Map<String, Integer> itemsGroupedDailySales, List<TodayMenu> itemsOnTodayMenu) {
List<TodayMenu> recommendedTodayMenu = new ArrayList<>();
for (Map.Entry<String,Integer> itemGroupedDailySales : itemsGroupedDailySales.entrySet()) {
for (TodayMenu todayMenu : itemsOnTodayMenu) {
if (todayMenu.getMenuId().equals(itemGroupedDailySales.getKey())) {
recommendedTodayMenu.add(todayMenu);
break;
}
}
if (recommendedTodayMenu.size() >= 9) {
return recommendedTodayMenu;
}
}
return recommendedTodayMenu;
}
最佳答案
结果只包含 itemsOnTodayMenu 的记录,因此您可以开始遍历此列表并在 itemsGroupedDailySales 中执行查找(HashMap 在这方面很好)。
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
private List<TodayMenu> getRecommendedTodayMenuItemsBetter(Map<String, Integer> itemsGroupedDailySales,
List<TodayMenu> itemsOnTodayMenu) {
return itemsOnTodayMenu.stream()
.filter((tm)->itemsGroupedDailySales.containsKey(tm.getMenuId()))
.limit(9)
.collect(Collectors.toList());
}
备注:您不使用 itemsGroupedDailySales 的值。您的逻辑在前 9 个匹配项后停止,但没有定义顺序。例如,被推荐的不是最畅销的。我希望你知道这一点。
关于java - 在 Java 中用流 api 替换多个 FOR 循环的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63411525/
我是一名优秀的程序员,十分优秀!