我正在尝试在我的应用程序中执行以下操作:
我从一些String
获得了一些Textviews
个值。我将以下列方式将此值添加到ArrayList<HashMap<String,String>>
,其中
cart_list
的类型为HashMap<String,String>>
,购物车的类型为ArrayList<HashMap<String,String>>
cart_list.put("quantity",""+qty);
cart_list.put("item_id"+item_id_number,""+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);
cart.add(cart_list);
我想只为cart
添加唯一值。如何检查“ArrayList&gt;”中是否已存在给定值。请告诉我一步一步做什么。
答案 0 :(得分:1)
试试这个..
for(int i = 0; i < cart.size(); i++){
if(cart.get(i).containsKey(yourkey))
Toast.makeText(getBaseContext(), "The key already present in HashMap.", Toast.LENGTH_SHORT).show();
if(cart.get(i).containsValue(yourvalue)){
String key = getKeyByValue(cart.get(i), yourvalue);
if(key.equals(yourkey)){
Toast.makeText(getBaseContext(), "The keys are same having same value.", Toast.LENGTH_SHORT).show();
}
}
}
和getKeyByValue方法
public static <T, E> T getKeyByValue(Map<T, E> map, E value) {
for (Entry<T, E> entry : map.entrySet()) {
if (value.equals(entry.getValue())) {
return entry.getKey();
}
}
return null;
}
在此 yourkey 中,您要检查给定的密钥(字符串,如数量)已经存在
yourvalue ,例如购物车 HashMap
值中的Itemname
答案 1 :(得分:0)
答案 2 :(得分:0)
Set<String> st = cart_list.keySet();
if(!st.contains("newKey")){
cart_list.put("YourKey", "Yourvalue");
cart.add(cart_list);
}
else{
System.out.println("Dupliation not allowed");
}
答案 3 :(得分:0)
尝试使用不同的集
public ArrayList<HashMap<String,String>> DistN(ArrayList<HashMap<String,String>> col)
{
ArrayList<HashMap<String,String>> DistN;
DistN = new ArrayList<HashMap<String,String>>();
for(int i = 0; i < col.size(); i++) {
final HashMap<String, String> chval = new HashMap<String, String>();
chval.put(NO, col.get(i).get(NO));
chval.put(IE, col.get(i).get(IE));
if (!DistN.contains(chval)) {
DistN.add(chval);
}
}
return DistDN;
}