如何比较一个项是否已经添加到arraylist <hashmap <string,string>&gt;?</hashmap <string,string>

时间:2014-08-07 09:54:18

标签: android arraylist hashmap comparison

我正在尝试执行以下操作:

  1. 我正在从服务器检索一些preferences值,并在Toggle Button中的ListView中设置它。

  2. 在选择特定首选项并单击按钮时,我希望将该项目添加到arraylist中。 例如:

  3. ITEM_ID = 1; 类别=&#34;披萨&#34; Listview的首选项1. Xtra Cheese 2. Xtra Salt。

    选择Xtra Cheese我希望我的项目被添加到arraylist,即cart。 在选择Xtra CheeseXtra Salt后,我又要将我的项目添加到cart。 也就是说,我希望将具有不同偏好组合的项目仅添加到cart一次。

    我做了以下编码。请告诉我一步一步做什么。

        add_list_to_cart.setOnClickListener(new OnClickListener() {
    
            @Override
            public void onClick(View v) {
    
                // String pref_name1="pref_name";
                int pre_arr_len = prefern_arr1.length;
                HashMap<String, String> cart_list = new HashMap<String, String>();
                String qty = quantity.getText().toString();
                // HashSet hs = new HashSet();
                cart_list.put("quantity", "" + qty);
                cart_list.put("item_id", "" + item_id_number);
                cart_list.put("Category", Itemname);
                cart_list.put("Details", Item_details);
                cart_list.put("Price", Item_price);
                cart_list.put("Currency", Item_currency);
                cart_list.put("images", images); 
                if(pre_arr_len!=0)
                {
                for (int i = 0; i < pre_arr_len; i++) {
                    String temp = prefern_arr1[i];
                    if (temp != null && temp.compareToIgnoreCase("empty") != 0) {
                        cart_list.put(temp, temp);
                        if(cart.size()!=0)
                        {
                            if (cart.get(i).containsKey("item_id"))
                            {
                                if (cart.get(i).containsValue(item_id_number))
                                {
                                    cart.get(i).containsValue(temp);
                                    String pref_id = getKeyByValue(cart.get(i), temp);
                                    //compare if the same prefernce cobinations exist
                                    //if(yes)
                                    //{
                                        //don't add to cart
                                    //}
                                    //else
                                    //{add to cart}
                                }
                            }
                        }
                    }
                   }
                }
                    cart.add(cart_list);
    
    
    
    
    
           public <T, E> E getKeyByValue(Map<T, E> map, E value) {
                for (Entry<T, E> entry : map.entrySet()) {
                    if (value.equals(entry.getValue())) {
                        // return entry.getKey();
                        return entry.getValue();
                    }
                }
                return null;
            }
    

1 个答案:

答案 0 :(得分:1)

尝试这样的事情

ArrayList<HashMap<String, String>> test = new ArrayList<HashMap<String,String>>();
boolean exists = false;
for (HashMap<String, String> hmap : test)
{
    if (hmap.get("item_id").equals("to_check_id"))
    {
        //exists
        exists = true;
        break;
    }
}

if (exists)
{
    //exists do something
}

修改

在你的情况下

    boolean exists = false;
    for (HashMap<String, String> hmap : cart)
    {
        if (hmap.get("item_id").equals(cart_list.get("item_id"))
        {
            //exists
            exists = true;
            break;
        }
    }

    if (!exists)
    {
        //does not exist
        //add to card
        card.add(cart_list);
    }
    else
    {
        //item already exists
    }