0

我正在尝试用 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 中插入字符串。我该如何克服这个问题?

4

2 回答 2

1

是的,您每次都创建一个新的空数组列表。您需要检索现有的(如果有)并添加到其中。就像是:

List<String> list = MyClass.subsections.get("Chapter");
if (list == null) {
    list = new ArrayList<String> ();
    MyClass.subsections.put("Chapter", list);
}
list.add(textField.getText());
于 2013-02-17T16:10:53.243 回答
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,可能会删除该索引处先前保存的数据。

于 2013-02-17T16:12:06.597 回答