Проблема перезаписи: первая карта перезаписывается второй, когда хранится в списке ArrayList, поэтому может видеть вторую карту дважды

#java #arraylist #hashmap #apache-poi

Вопрос:

Я пытаюсь сохранить карту в ArrayList. Проблема в том, что вторая карта перезаписывает первую карту. Поэтому я дважды вижу вторую карту при печати списка массивов

Я написал код

 public static ArrayList<HashMap<String, String>> getAllData(){
        loadExcelFile();
        XSSFRow rowHeader=sheet.getRow(0);
        al=new ArrayList<Movie>();
        ArrayList<HashMap<String, String>> al2=new ArrayList<HashMap<String, String>>();
        HashMap<String, String> map=new HashMap<String, String>();
        int rowCount=sheet.getPhysicalNumberOfRows();
        for (int x=1; x<rowCount; x  ) {
            XSSFRow row=sheet.getRow(x);
            for (int y=0; y<row.getLastCellNum(); y  ) {
                String key=rowHeader.getCell(y).getStringCellValue();
                String value=row.getCell(y).getStringCellValue();
                map.put(key, value);
            }
            al2.add(map);
        }
        System.out.println(al2);
        return al2;
    }
 

В списке ArrayList должны храниться две карты, но я вижу, что вторая карта повторяется дважды.
Пожалуйста, помогите

Комментарии:

1. Поэтому используйте другую карту вместо многократного использования одной и той же карты.

2. Перемещайтесь HashMap<String, String> map = ... внутри for цикла, таким образом, каждый цикл цикла будет генерироваться новый/уникальный.

3. @sorifiend Спасибо, что это сработало. Я поместил код за пределы внутреннего цикла for, он работал