我有问题,我需要在不同人群中组织我的常见问题解答
Men ---> Young --> Working
--> Not Working
---> Old
Woman --> Young --> Working
--> Not Working
--> Old
为此,我使用具有不同数组的FAQController
String Qmen[] = new String[12];
String Qwomen[] = new String[12];
String QmenOld[] = new String[12];
String QmenYoung[] = new String[12];
String QwomenOld[] = new String[12];
String QwomenYoung[] = new String[12];
String QmenYoungWorking[] = new String[12];
String QmenYoungNotWorking[] = new String[12];
....
之前的问题是问题 答案的相同数组例如:AmanYoung []
之后我填写了像这样的问题/答案
Qmen[0] = "How to contact ?";
Rmen[0] = "Call at number XXXXX";
所有这些人群之间存在非常不同的问题,最近出现了两个新人群,Man - >年轻 - >不工作 - >驱动器/ NotDriver
将所有这些问题与所有这些人群组织在一起很复杂
你有新方法吗?使用Api?
谢谢你的帮助
答案 0 :(得分:1)
首先,除非你有特殊的理由知道将会有12个问题并且完全没有12个问题我会使用List<>而不是阵列。
第二,您没有使用Java的任何面向对象的功能。 我至少会为了简单而将访问者的可见性留空(
)class FaqEntry{
String question;
String answer;
public FaqEntry(String question, String answer) {
this.question = question;
this.answer = answer;
}
}
enum PopulationWithState {
MenYoungWorking,
MenYoungNotWorking;
}
然后将问题存储在以下内容中:
Map<PopulationWithState, List<FaqEntry>> faq = new HashMap<>();
//Fetch list of questions for a type. Return a new List if no questions exist
faq.computeIfAbsent(PopulationWithState.MenYoungNotWorking, k-> new LinkedList<>()).add(new FaqEntry("Question here", "Answer here"));
faq.computeIfAbsent(PopulationWithState.MenYoungNotWorking, k-> new LinkedList<>()).add(new FaqEntry("Question 2 here", "Answer 2 here"));
//Fetch a particular list
List<FaqEntry> menYoungNotWorking = faq.computeIfAbsent(PopulationWithState.MenYoungNotWorking, k-> new LinkedList<>());