我有一个像这样的HashMap
public static HashMap<String, Integer> jsonPosition = new HashMap<String, Integer>();
我在我的hashmap中放了一些这样的值
GlobalClassParameters.jsonPosition.put("another income",
GlobalClassParameters.jsonPosition.size());
现在我想按密钥删除这些项目。我写了一些代码,可以使用等于某个值的键删除所有项目。
Object objectToRemove = null;
Iterator<Map.Entry<String, Integer>> iter = GlobalClassParameters.jsonPosition.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry<String, Integer> entry = iter.next();
if(entry.getKey().equalsIgnoreCase("another income"))
{
objectToRemove = entry;
break;
}
}
if(objectToRemove != null)
{
GlobalClassParameters.jsonPosition.entrySet().remove(objectToRemove);
}
我的问题是,我不需要使用等于我的&#34;另一个收入&#34;的密钥删除所有对象,但我想只删除一个带有该密钥的对象。
答案 0 :(得分:3)
您无法在HashMap
中为单个密钥设置多个值。您只是覆盖了此密钥的先前值。
除了地图之外,还有一个remove方法,它接受一个键并删除该键的条目。
答案 1 :(得分:2)
Java中的HashMap只为每个键保存一个值。
"Income" => 4500
"Another Income" => 6700
"Third Income" => 2400
因此,如果您要求HashMap删除“Another Incomse”键后面的整数,则只有一个值被删除。
使用HashMap无法实现以下功能!!
"Income" => 4500
"Another Income" => 6700
"Another Income" => 5300
"Third Income" => 2400
使用此代码
HashMap<String, Integer> incomes = new HashMap<String, Integer>();
incomes.put("Income", 4500);
incomes.put("Another Income", 6700);
incomes.put("Another Income", 5300);
incomes.put("Third Income", 2400);
将导致这一点:
"Income" => 4500
"Another Income" => 5300
"Third Income" => 2400
自第二次为“另一个收入”分配值时,您只需覆盖第一个条目。