Мое сомнение, как я могу отобразить 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 );
и так далее.