为什么我的HashMap.containsKey(myKey)总是返回false?

时间:2016-12-17 23:37:52

标签: java dictionary hashmap containskey

我有一个包含三个对象的程序,其中一个是一个6变量对象,表示ResulSet中的列。另外两个有3个变量,它们与我的另外6个变量对象的第一个和最后一个匹配。我有一个List< 6 Var对象>表示ResultSet记录本身。我试图解析一个6 Var对象列表来压缩结果集,以便我只有一个记录为我的较小的3变量对象的每个键。我正在使用两个3 var对象的哈希映射来实现这一点。下面是我的方法本身,它采用List并返回相同但浓缩。 ItemQuantities是我的6个变量对象。 CustomerProductClass是我的3值键,Item是我希望在返回列表中唯一的3值键。您可以看到我正在尝试比较当前HashMap包含当前对象的关键,并逐步完成逻辑,以确定它是否应该删除现有记录并将其自身放入。如果你能理解为什么我的第一个if语句总是通过并且永远不会达到elses,请告诉我。

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.
}

0 个答案:

没有答案