2013-05-02 2 views
0

Допустим, у меня есть следующая настройка hashmap в моей программе. Я хочу взять входы хэш-карты и сохранить их в объекте. Текущий список hashmap слишком длинный, чтобы вставить в основной код, поэтому я пытаюсь прочитать входы из отдельного объектного файла, чтобы ограничить длину основного кода. Как бы вы порекомендовали мне это сделать?ввод ключа/значений hashmap в объект

Спасибо!

int i = input.nextInt(); 
Map<Character,Integer> map = new HashMap<Character,Integer>();       

map.put('A', i*2);       
map.put('B', i*2); 
map.put('C', i*2); 
map.put('D', i*4); 
map.put('E', i*2); 
map.put('F', i*3); 
map.put('G', i*2); 
map.put('H', i*6); 
        and so on forth down to Z and other 20 other characters... 
+0

Являются ли выражения всегда 'i * 2'? Всегда ли они одинаковы для всех букв 'A'..'Z'? – dasblinkenlight

+0

Они отличаются для некоторых персонажей. Я просто копировал/вставлял первые несколько. Позвольте мне временно отредактировать это, так что кто-то еще не думает, что слишком – harshm0de

+0

Я думаю, что i * 2 должен иметь шаблон, поэтому вы можете сделать это с помощью цикла :) – cakil

ответ

0

вы имеете в виду, как это:

int i=1000;//anything what you like 
Map<Character,Integer> map = new HashMap<Character,Integer>(); 
for(int x=65;x<=90;x++){ 
     char c=(char)x; 
     map.put(c, i*2); 
}  
+0

К сожалению, i * 2 не является образцом для каждого персонажа , он отличается для группы более поздних символов – harshm0de

0

Предполагая, что эти множители не должны менять, то вы можете сделать следующее.

int[] multipliers = {2,2,2,4,2,3,6,...}; 
char chars[] = {'A','B',...}; /// or if they are in ascii order you dont need to specify this 
for (int j=0;j<chars.length;j++){ 
    map.put(chars[j],i * multipliers[j]); 
} 

Просто убедитесь, что ваши два массива имеют одинаковый размер.

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