java - 嵌套 For 循环的更好方法
问题描述
我只是想检查一下是否有更好的方法来执行此嵌套 for 循环。下面是代码:
if(order){
outer: for (Object item : list) {
if (item.detail() == 1) {
for (Object2 item2 : list2) {
if(item2.getOrderNbr() == item.getOrderNbr()) {
//non-related
break outer;
}
}
}
}
总结一下我正在尝试做的事情。我有两个列表,第一个列表有一个类似对象的列表,但有一个额外的字段告诉我订单是否在某个位置。如果是,它会转到第二个列表并尝试根据订单号在该列表中找到相应的对象,因为订单号将匹配。第二个列表没有属性告诉我它是否在某个位置,所以我必须使用两个列表。
解决方案
由于您secondList
一直在根据进行检查orderNbr
,因此最好创建一个Map
并使用它来更快地检索。
我假设您的第二个列表包含为Order
易于理解而命名的类
你可以试试这个:
Map<Integer, Order> orderMap = new HashMap<>();
list2.stream().collect(Collectors.groupingBy(Order::getOrderNbr));
list1
.stream()
.filter(f -> f.getDetail() == 1)
.map(First::getOrderNbr)
.forEach(orderNo -> {
Order order = orderMap.get(orderNo);
// your-code
});
注意:list1
此代码还支持在同一地点的多个订单。
推荐阅读
- ios - Q:如何重构尽可能多的带有属性的代码块的重复?
- javascript - React-Native 应用程序上的 AppLock 功能
- flutter - 使用 Dart 将字符串转换为列表/映射
- javascript - NodeJS (Express + PUG) MVC 端口检查器
- java - 创建一个编码字母
- r - R中的函数可以计算一个数字在向量中出现的次数
- esp8266 - AT+CIPSENDEX 返回链接无效
- c# - 如何在 Linq Where 子句中利用动态编程?
- android - 为什么我的应用程序在集成 Flutter 的 webview 后崩溃。获取平台异常
- c# - 等待动态获取错误“System.ValueType”不包含“GetAwaiter”的定义