java如何在哈希映射中多次添加相同的数据值?
Hashi希望将值添加到表单中。现在有些值是单个的,有些值我不需要在数组列表的for循环中多次添加
代码:
data = new HashMap<String, String>();
data.put("save", "1");
data.put("disc", "");
data.put("term_condi", edt_payment_terms.getText().toString());
data.put("memo", edt_item_memo.getText().toString());
data.put("note", edt_note.getText().toString());
data.put("due_date", mDueDate);
data.put("pay_terms", edt_payment_terms.getText().toString());
data.put("currency_id", sessionData.getString("currency_id",""));
data.put("currency_value",sessionData.getString("currency_value",""));
data.put("invoice_date", mInvoiceDate);
data.put("discount", mDiscount.toString());
data.put("shipping", mShipping.toString());
data.put("total", mTotalamount.toString());
for (String email : mEmailList) {
data.put("send_to[]", email.toString());
}
for(Item item : mItemArrayList) {
data.put("tax[]", item.getItemTax());
data.put("qty[]", item.getItemQuantity());
data.put("item_name[]", item.getItemName());
data.put("unit_price[]", item.getItemUnitPrice());
data.put("disc[]", item.getDescription());
}
data.put("send", "1");
当我运行for循环时,我只得到hashmap中它的最后一个索引。我无法在for循环中初始化哈希映射,所有其他单个值都将得到双精度。 我该怎么做?请帮忙。谢谢
# 1 楼答案
在
HashMap
中,如果使用相同的键添加值,HashMap
将用最后一个值替换现有键In the document of HashMap将指定值与此映射中的指定键相关联。如果映射之前包含键的映射,则替换旧值
例:
在本例中,
map
大小为1(key=“123”,value=“2”)我认为您应该创建一个格式为“str1,str2,str3”的字符串,并将该字符串放入HashMap。以使用字符串接收值的形式。拆分(“,”)以获取每个值
# 2 楼答案
你可以: 1.使用列表作为值的地图。地图>;。 2.创建一个新的包装器类,并将该包装器的实例放在映射中。地图 3.使用类似元组的类(省去了创建大量包装器的麻烦)。地图>;。 4.并排使用多张地图。 例子
以列表作为值的映射
//创建我们的地图 地图>;peopleByForename=new HashMap>;();
//填充它 List people=new ArrayList(); 人添加(新人(“鲍勃·史密斯”); 人添加(新人(“鲍勃·琼斯”); 人们直呼其名。放(“鲍勃”,人们)
//从中读出 列出Bob=peopleByForename[“Bob”]; 人员bob1=bobs[0]; 人bob2=BOB[1]
这种方法的缺点是,列表不能精确绑定到两个值
使用包装器类
//定义我们的包装器 类包装器{ 公共包装(个人1,个人2){ 这person1=person1; 这person2=person2; }
}
//创建我们的地图 Map peopleByForename=new HashMap()
//填充它 包装人=新包装人() 人们直呼其名。放置(“鲍勃”,新包装物(新人(“鲍勃·史密斯”), 新人(“鲍勃·琼斯”)
//从中读出 包装bobs=peopleByForename[“Bob”]; 人bob1=人BOB。人1; 人bob2=bobs。人2
这种方法的缺点是,必须为所有这些非常简单的容器类编写大量的boiler plate代码
//您必须用Java编写或下载一个元组类,(.NET附带一个元组类)
这种解决方案的缺点是,这两个映射并不明显相关,编程错误可能会导致这两个映射不同步