У меня есть HashMap
, содержащие HashMap
, и эта вторая HashMap
содержит другой HashMap
:заселить Вложенные HashMaps
public static final Map<String, Map<String, Map<String, Boolean>>> questionnaireData;
Я хочу, чтобы мои HashMap
быть static
и final
и содержит данные, так что я сделал следующее:
public static final Map<String, Map<String, Map<String, Boolean>>> questionnaireData;
static {
Map<String, Map<String, Map<String, Boolean>>> data = new HashMap<>();
data.put(
"Architecture des ordinateurs",
new HashMap<String, Map<String, Boolean>>() {{
put(
"1. La partie du processeur spécialisée pour les calculs est :",
new HashMap<String, Boolean>() {{
put("L’unité mathématique", false);
put("Les Registres", false);
put("L’unité arithmétique et logiqueue et logique", true);
put("UCC", false);
}}
);
put(
"2. Dans un ordinateur, les données sont présentées par un signal électrique de la forme :",
new HashMap<String, Boolean>() {{
put("Analogique", false);
put("Numérique", true);
put("Alphanumérique", false);
put("Alphabétique", false);
}}
);
put(
"3. Les différents éléments d’un ordinateur (mémoire, processeur, périphériques…) sont reliés entre eux par des:",
new HashMap<String, Boolean>() {{
put("Fils/câbles", true);
put("Registres", false);
put("Cartes d’extensions", false);
put("Bus", false);
}}
);
}}
);
data.put(
"Bureautique",
new HashMap<String, Map<String, Boolean>>() {{
put(
"1. Quelles sont les fonctions d’un logiciel de traitement de texte ?",
new HashMap<String, Boolean>() {{
put("Mise en page d’un texte", true);
put("Compilation d’un texte", false);
put("Présentation d’un texte sous forme de diaporama ", false);
put("Edition d’un texte", true);
}}
);
put(
"2. Insérer des lignes supplémentaires dans un tableau Word :",
new HashMap<String, Boolean>() {{
put("Cela n'est pas possible et il faut calculer dès le départ le nombre de lignes qui seront nécessaires.", false);
put("Peut se faire à n'importe quel moment en allant dans la dernière cellule du tableau et en appuyant sur la touche Espace.", false);
put("Peut se faire à n'importe quel moment en utilisant le menu Tableau - Insérer Lignes.", true);
put("Peut se faire à n'importe quel moment en allant dans la dernière cellule du tableau et en appuyant sur la touche Entrer.", false);
}}
);
put(
"3. Qu’est ce qu’une cellule :",
new HashMap<String, Boolean>() {{
put("La cellule est une colonne.", false);
put("La cellule est une ligne.", false);
put("Aucune des deux réponses.", true);
}}
);
}}
);
questionnaireData = Collections.unmodifiableMap(data);
}
Я слышал, что использование анонимного класса может создавать проблемы, но я не могу найти другого метода, кроме этого.
Фактически, существует метод, в котором я должен объявить и заполнить HashMap
и использовать его в качестве аргумента для родителя HashMap
, но в моем случае я получаю сотни объявлений.
Что вы думаете о моем коде? и если есть какой-то лучший метод, пожалуйста, дайте мне знать.
Как насчет создания пользовательских классов как для вашей вопросника, так и для вопросов? Наличие так много встроенных карт просто сделает ваш код уродливым и утомительным для работы. – t0mppa
Откуда эти данные? Все ли это статично? –
Этот код ужасен; например, внутренние Карты по-прежнему могут быть изменены и добавлены или удалены дополнительные элементы (что, по-видимому, не является вашим намерением, и побеждает идею константы статического финала). Кроме того, обычно не рекомендуется использовать идиому «двойная привязка» (искать по сайту по причинам). Почему бы не создать подходящий (неизменный) класс для вашей проблемы с хранением данных? И затем инициализируйте с помощью некоторого файла config/properties. – qqilihq