/ / Добавяне на динамично съдържание в ArrayList на String в HashMap - java, arraylist, hashmap

Добавяне на динамично съдържание в ArrayList на String в HashMap - java, arraylist, hashmap

Опитвам се да създам система за управление на съдържанието в 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. Как да преодолея този проблем?

Отговори:

1 за отговор № 1

Да, създавате нов празен всеки път. Трябва да извлечете съществуващата, ако има такава, и да я добавите. Нещо като:

List<String> list = MyClass.subsections.get("Chapter");
if (list == null) {
list = new ArrayList<String> ();
MyClass.subsections.put("Chapter", list);
}
list.add(textField.getText());

1 за отговор № 2

Трябва първо да получите списъка ArrayList, който съдържа подразделенията от картата:

ArrayList<String> section = subsections.get("Chapter");

След това го създайте, само ако не съществува:

if (section == null) {
ArrayList<String> section = new ArrayList<String>();
subsections.put("Chapter", section);
}

След това добавете текста си в края на раздела:

section.add(textField.getText());

Кодът ви замества ArrayList на индекс "Chapter" всеки път, когато се обадите на "put", като потенциално премахнете предишните запазени данни в този индекс.