Опитвам се да създам система за управление на съдържанието в 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", като потенциално премахнете предишните запазени данни в този индекс.