假设有一个LIST<Order>集合,其中Order对象有个属性amount,Order对象随机分布在list中,给出一个总金额totalAmount,totalAmount等于其中某些Order的amount之和,在不对amount进行排序情况下找出对应的Order对象是哪些
时间: 2024-03-16 16:42:34 浏览: 47
可以通过遍历集合并使用一个Map来记录每个Order对象的amount,同时计算累加和,当累加和大于等于totalAmount时,即可找到对应的Order对象。具体实现可以参考以下代码:
```java
List<Order> orders = ... // 初始化订单集合
int totalAmount = ... // 给定的总金额
// 使用Map记录每个Order对象的amount
Map<Integer, Order> amountMap = new HashMap<>();
int sum = 0;
for (Order order : orders) {
amountMap.put(order.getAmount(), order);
sum += order.getAmount();
if (sum >= totalAmount) {
break;
}
}
// 找出对应的Order对象
List<Order> result = new ArrayList<>();
sum = 0;
for (Order order : orders) {
if (amountMap.containsKey(order.getAmount())) {
result.add(order);
sum += order.getAmount();
amountMap.remove(order.getAmount());
if (sum >= totalAmount || amountMap.isEmpty()) {
break;
}
}
}
// 输出结果
System.out.println(result);
```
这段代码先遍历集合并使用Map记录每个Order对象的amount,同时计算累加和。然后再次遍历集合,找出对应的Order对象直到累加和达到totalAmount或集合遍历完毕。最后输出结果即可。
阅读全文