- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 HashMap
,其中包含一个 HashMap
,而第二个 HashMap
包含另一个 HashMap
:
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
的参数,但就我而言,我'最终会得到数百个声明。
你觉得我的代码怎么样?如果有更好的方法,请告诉我。
最佳答案
既然您要求提供示例,我们就开始吧。
主题:
package com.answer.stack.overflow.questionnaire;
import java.util.Set;
import java.util.TreeSet;
public class Topic {
private String title;
private Set<Question> questions = new TreeSet<Question>();
public Topic(String title) {
this.title = title;
}
public String getTitle() {
return title;
}
public void addQuestion(Question question) {
questions.add(question);
}
public Set<Question> getQuestions() {
return questions;
}
@Override
public String toString() {
String text = "Topic is ... " + title + "\n";
for (Question question : questions) {
text += question.toString() + "\n";
}
return text;
}
}
问题:
package com.answer.stack.overflow.questionnaire;
public class Question implements Comparable<Question> {
private String text;
private String code;
private Answer correctAnswer;
public Question(String code, String text, String correctAnswerText) {
this.code = code;
this.text = text;
this.correctAnswer = new Answer(code, correctAnswerText);
}
public String getText() {
return text;
}
public String getCode() {
return code;
}
public boolean isCorrect(String answer) {
return correctAnswer.getText().equalsIgnoreCase(answer);
}
@Override
public int compareTo(Question o) {
return code.compareToIgnoreCase(o.code);
}
@Override
public String toString() {
return code + ": " + text + " (" + correctAnswer.getText() + ")";
}
}
答案:
package com.answer.stack.overflow.questionnaire;
public class Answer {
private String code;
private String text;
public Answer(String code, String text) {
this.code = code;
this.text = text;
}
public String getText() {
return text;
}
@Override
public String toString() {
return code + ": " + text;
}
}
调查问卷:
package com.answer.stack.overflow.questionnaire;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Questionnaire {
private List<Topic> topics = new ArrayList<Topic>();
public void addTopic(Topic topic) {
topics.add(topic);
}
public void checkAnswers(Map<String, String> answers) {
for (Topic topic : topics) {
for (Question question : topic.getQuestions()) {
String code = question.getCode();
String answerText = answers.get(code);
if (answerText == null) {
System.out.println("Answer not provided for question " + code + ".");
} else if (!question.isCorrect(answerText)) {
System.out.println("\"" + answerText + "\" is an incorrect answer for question " + code + ".");
} else {
System.out.println("Question " + code + " was answered correctly!");
}
}
}
}
@Override
public String toString() {
String text = "";
for (Topic topic : topics) {
text += topic.toString() + "\n";
}
return text;
}
public static void main(String[] args) {
Questionnaire questionnaire = new Questionnaire();
Map<String, String> answers = new HashMap<String, String>();
Topic topic = new Topic("My attributes");
topic.addQuestion(new Question("1A", "What is my name?", "Anonymous"));
topic.addQuestion(new Question("1B", "How tall am I?", "190 cm"));
questionnaire.addTopic(topic);
topic = new Topic("Maths");
topic.addQuestion(new Question("2A", "How much is 1+1?", "2"));
topic.addQuestion(new Question("2B", "How much is 3/0?", "Not a number"));
questionnaire.addTopic(topic);
System.out.println(questionnaire.toString());
answers.put("1B", "190 cm");
answers.put("2A", "2");
answers.put("2B", "infinite?");
questionnaire.checkAnswers(answers);
}
}
输出:
Topic is ... My attributes
1A: What is my name? (Anonymous)
1B: How tall am I? (190 cm)Topic is ... Maths
2A: How much is 1+1? (2)
2B: How much is 3/0? (Not a number)Answer not provided for question 1A.
Question 1B was answered correctly!
Question 2A was answered correctly!
"infinite?" is an incorrect answer for question 2B.
请注意,您应该从文件中读取所有问题,就像 qilihq 建议的那样,而不是将它们硬编码到您的程序中。
此外,这绝不是优化版本。重点是演示如何使用自定义类解决相同的问题。您可能想要研究访问者模式,以便以优雅且简单的方式检查答案,例如对不同类型的答案进行子类化。
关于java - 填充嵌套 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21803719/
padding:initial 比 padding:0 有什么优势吗?示例: textarea { padding: 0; } Hello, world! 最佳答案 它们的意思是一
我尝试通过按钮填充 JList,然后在先前填充的 Jlist 上使用 DoubleClick 填充 JTextField。 代码: private void extractUsedVariables
我正在尝试做 var width = ($(this).width() + $(this).css('padding-left') + $(this).css('padding-right' ));
我在导航中添加了悬停效果,遗憾的是悬停也影响了上面的文字。如何在不影响文本位置的情况下向导航添加悬停? 可悲的是,我找不到解决这个问题的方法。 HTML 模板:http://projects.help
我是 F# 初学者,下面代码中的 %-5s 和 %5s 有什么作用?我认为它提供了空间填充,但我不确定它是如何填充的? printfn "%-5s %5s" "a" "b" 当我尝试 prin
我需要选择带狗的用户(带 type 等于“狗”的宠物) var User = Waterline.Collection.extend({ identity: 'user', attribute
我一直在尝试让 Excel 在一组列上应用公式,然后将模式扩展到整个行集。 这导致了以下代码: For i = 0 To avgsheetNames.Count - 1 If Contains(CSt
随着 Flutter 2.0 的发布,FlatButton已被替换为 TextButton . 因此,填充属性不再直接可用,而是作为 ButtonStyle属性(property)。 我的问题是,我该
这似乎是一个简单的问题,但我已经尝试了一个小时,似乎无法弄清楚。 我要做的就是用 Canvas 填充 MainWindow。我找不到任何允许这样做的属性,我能想到的唯一方法是设置 Canvas.Wid
这是a website具有移动 View 。 网站宽度为 640 像素,但 iPhone 以 678 像素渲染文档。在 Android 中看起来很棒。 我添加了视口(viewport)元: 主体 C
我正在使用 GridBagLayout到(当前)显示两行。我知道这种布局对于这项任务来说太过分了,但我正在努力学习如何使用它。问题是我已将两个面板添加到两个单独的行中,并且内容周围存在巨大差距(请参见
我有以下代码已传递给我并创建多边形: var map; function initialize() { var myLatlng = new google.maps.LatLng(-36.4
我在 Jpanel 中有一些项目,然后将其推到顶部并用作基本搜索引擎的工具栏。我遇到一个问题,因为没有足够的空间,所以我的最后一个组合框没有显示。但是,左侧有很多空白空间,我需要移动所有内容来填充 J
我创建了带有阈值的二进制图像。如下图所示如何改变白色形状的颜色以使其可索引? 到目前为止,这是我的代码: void threshold() { cv::Mat src_8uc3_img = c
我有一个 JTable,我想知道是否有更好的方法来填充它,这是我的代码: //Metodo para llenar un jtable con datos de la base public stat
我想要做的是裁剪一个卷以删除所有不相关的数据。例如,假设我有一个 100x100x100 的体积,其中填充了 0,但其中的 50x50x50 体积则填充了 1。如何从原始体积中获得裁剪后的 50x50
因此,我正在创建一种对一组数字进行洗牌的方法,其想法是创建这些数字的总体。因此,我创建了一个循环,对数字进行洗牌,然后将其添加到数组列表中,但是经过一些调试语句后,我发现它确实对数字进行洗牌,但只将最
假设我有这两个类: public class A where T : IEntityWithID, new() { private static EntityInfo entityInfo =
我正在尝试添加用户输入的两个大整数作为字符串。当两个输入字符串的长度不同时,我尝试用零填充较短的数字,但它不起作用。因此,如果我输入 456 和 7,它会给出 3,前面有一些随机字符。感谢您的任何建议
这是我将内容打印到表格 View 的代码 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: Index
我是一名优秀的程序员,十分优秀!