我有一个包含三个对象的程序,其中一个是 6 个变量对象,它代表 ResulSet 中的列。另外两个有 3 个变量,它们与我的其他 6 个变量对象中的第一个和最后一个 3 个匹配。我有一个 List<6 Var object> 代表 ResultSet 记录本身。我正在尝试解析 6 个 Var 对象的列表以压缩结果集,以便我的较小的 3 个变量对象的每个键只有一个记录。我正在使用两个 3 var 对象的哈希映射来实现这一点。下面是我的方法本身,它接受一个 List 并返回相同但浓缩的内容。ItemQuantities 是我的 6 个变量对象。CustomerProductClass 是我的 3 值键,而 Item 是我希望在返回列表中唯一的 3 值键。您可以看到我正在尝试比较当前 HashMap 是否包含当前对象的键 im on 并逐步执行逻辑,以确定它是否应该删除现有记录并将其自身放入。让我知道你是否能明白为什么我的第一个 if 语句总是通过而 else 永远不会到达。
public static List<ItemQuantities> getCondensedItemQuantities (List<ItemQuantities> fullItems) {
Map<CustomerProductClass,Item> groupedProductQuantities = new HashMap<CustomerProductClass,Item>();//making the map to put shit in
for(int i = 0;i<fullItems.size();i++){
ItemQuantities itemQuantities;
itemQuantities = fullItems.get(i);
Item item = new Item(itemQuantities.itmType, itemQuantities.quant, itemQuantities.unitPrice);
CustomerProductClass myCustomerProductClass = new CustomerProductClass(itemQuantities.customer,itemQuantities.location, itemQuantities.prodClass);
if(!groupedProductQuantities.containsKey(myCustomerProductClass)){
groupedProductQuantities.put(myCustomerProductClass,item);
}
else{
if(item.Quantity > groupedProductQuantities.get(myCustomerProductClass).Quantity){
groupedProductQuantities.remove(myCustomerProductClass);
groupedProductQuantities.put(myCustomerProductClass, item);
}
if(item.Quantity == groupedProductQuantities.get(myCustomerProductClass).Quantity){
if(item.UnitPrice > groupedProductQuantities.get(myCustomerProductClass).UnitPrice){
groupedProductQuantities.remove(myCustomerProductClass);
groupedProductQuantities.put(myCustomerProductClass, item);
}
}
}
}
List<ItemQuantities> finalList= new ArrayList<ItemQuantities>();
for(CustomerProductClass customerProductClass : groupedProductQuantities.keySet()){
ItemQuantities itemQuantities = new ItemQuantities(customerProductClass.Customer,customerProductClass.Location,customerProductClass.ProductClass,groupedProductQuantities.get(customerProductClass).Name,groupedProductQuantities.get(customerProductClass).Quantity,groupedProductQuantities.get(customerProductClass).UnitPrice);
finalList.add(itemQuantities);
}
return finalList; //return the hash map combined into a list of ItemQuantities.
}