假设有一个LIST<Order>集合,其中Order对象有个属性amount,给出一个总金额totalAmount,totalAmount等于其中某些Order的amount之和,在不对amount进行排序情况下找出对应的Order对象是哪些
时间: 2024-03-16 07:42:23 浏览: 55
List集合按照对象中某个属性排序通用工具类(按对象中某属性排序)
可以使用一个循环遍历LIST<Order>集合,将每个Order对象的amount加起来,直到等于或超过totalAmount为止。如果等于totalAmount,则这些Order对象就是满足条件的。如果超过totalAmount,则需要将最后一个加入的Order对象减去,然后继续循环,直到找到满足条件的Order对象为止。以下是示例代码:
```java
List<Order> orders = new ArrayList<>(); // 假设已经初始化了订单集合
int sum = 0;
List<Order> result = new ArrayList<>(); // 用于存放满足条件的Order对象
for (Order order : orders) {
sum += order.getAmount();
result.add(order);
if (sum == totalAmount) {
break;
} else if (sum > totalAmount) {
while (sum > totalAmount) {
Order lastOrder = result.remove(result.size() - 1);
sum -= lastOrder.getAmount();
}
break;
}
}
```
在以上代码中,我们使用了一个sum变量来记录当前累加的amount之和,使用一个result集合来存放满足条件的Order对象。在循环中,我们依次将每个Order对象的amount加入sum变量中,并将其加入result集合中。如果sum等于totalAmount,则跳出循环;如果sum超过totalAmount,则需要将最后一个加入result集合的Order对象减去,并从result集合中移除,继续循环。最终,result集合中的Order对象就是满足条件的。
阅读全文