Строковый массив в объект коллекции HashMap - PullRequest
0 голосов
/ 02 августа 2011

У меня есть следующее

 String[] temp;

, которое возвращает

red
blue
green

Я хотел бы добавить массив строк в объект коллекции, такой как HashMap, чтобы я мог получить значения в любом классекак

HashMap hash = New HashMap();
hash.get("red");
hash.get("blue");
hash.get("green");

Как я могу это сделать?

Спасибо

Обновление 1

     String str = "red,blue,green";
        String[] temp;
        String delimiter = ",";
        temp = str.split(delimiter);
for (int i = 0; i < temp.length; i++) {
System.out.println(temp[i]);
}

С помощью приведенного выше кода я хотел бы получитьзначения на основе значений в массиве.Например, я хотел бы получить значения из другого класса, вызывая hash.get ("One"), который возвращает красный цвет, hash.get ("Two"), который возвращает синий цвет и т. Д.

Ответы [ 3 ]

2 голосов
/ 02 августа 2011
Map<String, String> hash = new HashMap<String, String>();    
for(i = 0 ; i < temp.length(); i++)
{
   hash.put(temp[i], temp[i]);
}

Затем вы можете получить с карты hash.get (temp [i]);

0 голосов
/ 02 августа 2011

Мое сомнение, как я могу отобразить temp [i] с красным, синим или зеленым?

Использование хэш-карты не решит эту проблему напрямую. В данный момент вам нужно написать

 temp[ someNumberHere ];

так

 temp[ 1 ];

возвращает строку "синий"

Если у вас есть hashMap, вы можете написать

 myColourMap.get( someNumberHere );

так

 myColourMap.get( 1 );

даст "синий". В любом случае вы конвертируете значение в соответствующую строку, но вам нужно знать, что «someNumber». Если вы хотите «синий», вам нужно знать, чтобы попросить номер 1.

Возможно, вам понадобится использовать константы с красивыми именами:

public Class Colours {

     public static final int RED = 0;
     public static final int BLUE = 1;
     public static final int GREEN = 1; 

     // plus either the array of strings or the hashMap

     public statuc String getColour(int colourNumber ) {
           return myArray[colourNumber]; // or myMap.get(colourNumber)
     }

}

Ваши клиенты теперь могут писать код, такой как

 Colours.getColour( Colour.RED );

[Лучше использовать перечисления, чем просто необработанные целые, но давайте сейчас не будем отвлекаться от массивов и hashMaps].

Теперь, когда вы могли бы предпочесть hashMap вместо массива? Учтите, что у вас может быть больше цветов, например, 12695295 может быть «светло-розовым», а 16443110 - «лавандовым».

Теперь вам действительно не нужен массив с 16 443 110 записями, когда вы используете только 500 из них. Теперь HashMap действительно полезная вещь

 myMap.put( Colour.LAVENDER, 16443110 );

и так далее.

0 голосов
/ 02 августа 2011
HashMap<String, String>() map = new HashMap<String, String>();
map.put(temp[i], temp[i]);//here i have considered key as the value itself.. u can use something else //also.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...