2012-06-16 4 views
1

У меня есть Java-карта со строкой в ​​ее ключе и целое по ее значению. Я хочу удалить определенную запись (ключ/значение) с этой карты, которая не имеет значения больше 5. Может ли любой орган предложить мне, как я могу это сделать?Как удалить запись из hashmap, проверив ее значение?

Спасибо!

ответ

4

Если у вас есть только обычная карта (т. Е. Нет дополнительной структуры данных, которая реализует обратное сопоставление), то ваш лучший вариант - перебрать набор значений, проверить каждое значение и использовать Iterator.remove(), чтобы удалить соответствующие.

Если у вас есть вторичная структура данных, вы можете использовать ее для идентификации записей, которые необходимо удалить. Но «стоимость» заключается в том, что такая структура данных требует пространства для представления и времени для обновления ... и ваш код более сложный.

+0

спасибо за ваши предложения. – flyleaf

2

Ok! Я сделал эту работу следующим образом. Благодаря Stephen C:

Iterator<Map.Entry<String,Integer>> iter = TestMap.entrySet().iterator(); 
while (iter.hasNext()) { 
    Map.Entry<String,Integer> entry = iter.next(); 
    if(entry.getValue() <= 5){ 
     iter.remove(); 
    } 
} 
+0

Yup ... это примерно то, как я его закодировал. –

Смежные вопросы