2015-08-13 3 views
3

У меня есть один HashMap как этотУдаление элементов из HashMap с помощью ключа в Java

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); 
} 

Моя проблема заключается в том, что мне не нужно, чтобы удалить все объекты с ключами, равными моим «Другой доход», но я хочу, чтобы удалить только один объект с помощью этого ключа.

+0

У вас есть ли? – Rohit5k2

+0

Да только один объект @ Rohit5k2 – Beka

+0

«Карта», как 'HashMap', имеет только ** одно ** значение для каждой клавиши. Когда вы удаляете ключ, вы удаляете связанное значение. Если вы хотите больше, вы должны использовать 'MultiMap'. – dotvav

ответ

3

Вы не можете поместить несколько значений для одного ключа в HashMap. Вы просто перезаписываете свое предыдущее значение для этого ключа.

Кроме того, у карт есть методы remove, которые принимают ключ и удаляют запись для этого ключа.

2

HashMap в Java просто содержит одно значение за ключ.

"Income"   => 4500 
"Another Income" => 6700 
"Third Income"  => 2400 

Так что, если вы спросите HashMap, чтобы удалить целое за ключ «Другой 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 

со второй раз, когда вы присваиваете значение «Другой доход», вы просто переписываете первую запись ,

+0

Я положил некоторые объекты с помощью клавиши «Еще один ключ», а когда я удалил «Another Incomse», а затем напечатал свой хэш-файл - hashmap пуст – Beka

+0

Да, потому что каждый раз, когда вы кладете целое число для ключа «Другой доход», вы перезаписываете любые существующее целое число для этого ключа. Для каждого ключа может быть только одно значение, то есть как HashMap (или карты вообще) работают на Java. – Phiwa

+0

Что такое решение? вы можете показать мне несколько примеров или если вы можете переписать мой код .thanks – Beka