2013-08-25 8 views
1

Я хочу поместить некоторые значения в мой map<String,String>. Но я не хочу переводить данные с равными ключами. Пример:Какую карту следует использовать?

map.put("foo","some"); 
map.put("bar","thing"); 
map.put("foo","new"); 

foo-some,bar-thing,foo-new. Возвратить

Но не bar-thing,foo-new.

Какую карту следует использовать?

+1

Что вы понимаете под смену данных? – cyberz

+0

'map.put (" foo ", 5) map.put (" foo ", 6) return (foo, 6)' – Tony

ответ

2

Я считаю, что вы пытаетесь сопоставить несколько целых чисел с одним строковым ключом. Это возможно, но если вы нарисуете свой ключ на List. Выбор между HashMap или TreeMap будет зависеть от того, хотите ли вы сохранить сортировку записей по ключу или нет.

Я считаю, что сортировка - это не то, что вы ищете; поэтому достаточно было бы HashMap.

public Map<String, List<Integer>> map = new HashMap<String, List<Integer>>(); 

Затем вы можете добавить несколько значений в том же ключе, как

public void addToMappedList(Map<String, List<Integer>> map, 
           String key, Integer value) { 
    List<Integer> existingValues = map.get(key); 
    if (existingValues == null) { 
     existingValues = new ArrayList<Integer>(); 
     map.put(key, existingValues); 
    } 
    existingValues.add(value); 
} 

addToMappedList(map, "foo", 1); 
addToMappedList(map, "foo", 2); 

Вот как идти об удалении отдельных значений из List. Возвращаемое значение boolean указывает, действительно ли был найден и удален value из List или нет.

public boolean removeFromMappedList(Map<String, List<Integer>> map, 
             String key, Integer value) { 
    List<Integer> existingValues = map.get(key); 
    if (existingValues != null) { 
     return existingValues.remove(value); 
    } 
    return false; 
} 

removeFromMappedList(map, "foo", 1); // true 
removeFromMappedList(map, "foo", 3); // false 

Чтобы удалить весь ключ и List связанный с ним просто использовать Map непосредственно

map.remove("foo"); 
Смежные вопросы