我正在尝试用Java创建一个内容管理系统,我在其中插入章节名称并在章节中创建章节。我使用了以下数据结构:
static ArrayList<String> chapters = new ArrayList<String>();
static Map<String,ArrayList<String>> subsections = new HashMap<String,ArrayList<String>>();
现在,为了插入,我使用以下代码:
ArrayList<String> secname = new ArrayList<String>();
secname.add(textField.getText());
MyClass.subsections.put("Chapter", secname);
问题是我得到了最后一个元素,其余元素被覆盖了。但是,我不能使用固定的ArrayList作为章节。我必须从GUI插入字符串运行时。我该如何克服这个问题?
答案 0 :(得分:1)
是的,每次都会创建一个新的空 arraylist。您需要检索现有的一个,如果有的话,并添加到它。类似的东西:
List<String> list = MyClass.subsections.get("Chapter");
if (list == null) {
list = new ArrayList<String> ();
MyClass.subsections.put("Chapter", list);
}
list.add(textField.getText());
答案 1 :(得分:1)
首先必须从地图中获取包含子部分的ArrayList:
ArrayList<String> section = subsections.get("Chapter");
然后只有在它不存在时才创建它:
if (section == null) {
ArrayList<String> section = new ArrayList<String>();
subsections.put("Chapter", section);
}
然后将文字附在该部分的末尾:
section.add(textField.getText());
每次调用“put”时,您的代码都会替换索引“Chapter”处的ArrayList,可能会删除此索引中以前保存的数据。