2014-02-21 2 views
0

Есть ли способ разместить 2-мерный массив в настройке хэш-карты?2 Размерный массив с Hash-map

Пример массива будет две строки { «Джон», «красный»}, { «Джордж», «синий}

И я хочу красный, чтобы соответствовать сортире и т.д.

Я знаю, что могу использовать вложенный цикл для прохождения каждого элемента в массиве 2d, но как его настроить, чтобы добавить их к хэш-карте

hashMap.put («Джон», «красный»);

ответ

1

Предполагая, что каждый массив имеет 2 элементов в виде {имя, цвет}, вы можете просто перебирать его

for(String[] combo : some2DArray){ 
    someHashMap.Put(combo[0], combo[1]); // Or swap them, depending on what you 
             // want to be the key and the value 
} 

Если вы хотите, чтобы исключить возможность удаления данных, потому что вам посчастливилось иметь два человека с тем же именем существует несколько подходов можно принять:

  • Держит старую данные

  • Храните новые данные

  • Назначают новые данные нового ключа

  • Объединить данные в том же ключе

Держите старые данные

Выполните проверку перед использованием HashMap#put и посмотреть если ключ уже существует.
Добавляйте данные только в том случае, если они еще не существуют.

Храните новые данные

Используйте текущий код, он будет перезаписывать старое значение.

Назначают новые данные нового ключа

Создать новый ключ на основе собственных правил и вставить это.

Объединить данные в том же ключе

Определите ваш HashMap, как HashMap<String, List<String>> и добавить значения в список.

+0

В ретроспективе: это всего лишь конкретная реализация того, что вы сказали в своем вопросе. Насколько я понял вас, это то, что вы хотите. Правильно ли я в этом? –

+0

Да, если бы я сделал это так, как я изначально собирался это сделать, у меня была бы проблема, потому что цикл прошел бы через каждую строку в массиве> Я не был уверен, могу ли я добавить как {name , Color}, без проблем с перекрытием. – user3307265

+0

Мне все еще не совсем понятно, что вы говорите, но если это работает, тогда это хорошо. Следует отметить одно: этот подход предполагает, что каждое имя происходит только один раз. Вы точно знаете, что это так? –

-2

Как насчет внедрения класса Pair, так что вы можете используйте HashMap<Pair<String,String>>?

EDIT: Может быть, я неправильно понял ваш вопрос, это то, что спрашивали?

+1

hashmap работает в Key, Value way. – tonga

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