通过java

时间:2015-08-13 14:57:42

标签: java android dictionary hashmap

我有一个像这样的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;的密钥删除所有对象,但我想只删除一个带有该密钥的对象。

2 个答案:

答案 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

自第二次为“另一个收入”分配值时,您只需覆盖第一个条目。