Организация данных в приложении андроид


Делаю игру, смысл которой отгадывать страну по ее флагу.
Для приложения использую ресурсы картинок и строки с названиями. В коде создаю два массива для этих данных со строгим соблюдением последовательности для дальнейшего доступа к ним по индексу (только чтение). Смотрел в сторону Enum, но ведь каждый его элемент является объектом , считаю этот вариант более накладной по производительности чем массив
Подскажите пожалуйста лучшее решение.
P.S. с бд пока незнаком.


Ответы (1 шт):

Автор решения: Эникейщик

Лучше использовать HashMap. Это структура данных вида ключ-значение. Тогда не придется беспокоиться о порядке.

Пример:

HashMap<String, String> flags = new HashMap<String, String>();
flags.put("Albania", "путь к ресурсу");
flags.put("Bulgaria", "путь к ресурсу");
flags.put("Croatia", "путь к ресурсу");
flags.put("Denmark", "путь к ресурсу");

Ключ - название страны, значение - путь к ресурсу с изображением флага.

Получить путь к флагу по названию страны очень просто

path = flags.get("Albania");

На русском немного тут, например.

Для получения случайного ключа нет прямого способа, можно сделать так. Сначала создать список из ключей:

Set<String> keysSet = flags.keySet();
String[] keysArray = keysSet.toArray(new String[keysSet.size()]);

Потом брать из него случайное значение:

path = flags.get(keysArray[random.nextInt(keysSet.size())]);

От массива, правда, избавиться не удалось. Зато удалось избавиться от необходимости поддерживания двух массивов в одном порядке.

→ Ссылка