У меня есть список userSubs (к которым я обращаюсь
dm.theUser.getAllSubmissions) элементов, называемых представлением и черновиком
я вызываю tempSub, которого нет в этом списке.
Здесь я предполагаю, что вы имели в виду:
userSubs = dm.theUser.getAllSubmissions);
Я создаю временный массив файлов с именем toDisplay и добавляю все
элементы в userSubs, а затем добавить tempSub.
Полагаю, вы указываете на это:
ArrayList<Submission> toDisplay = new ArrayList<>();
toDisplay = dm.theUser.getAllSubmissions();
if(dm.tempSub.draftCreated) {
toDisplay.add(dm.tempSub);
}
Проблема с вашим кодом в том, что вы создаете новую переменную toDisplay
с
ArrayList<Submission> toDisplay = new ArrayList<>();
но затем вы заменяете вновь созданный экземпляр на:
toDisplay = dm.theUser.getAllSubmissions();
Итак, ваш toDisplay
больше не является новым экземпляром ArrayList. Это потому, что ваш toDisplay
теперь ссылается на экземпляр, возвращаемый dm.theUser.getAllSubmissions();
При использовании следующего кода:
toDisplay = dm.theUser.getAllSubmissions();
if(dm.tempSub.draftCreated) {
toDisplay.add(dm.tempSub);
}
вы добавляете элемент к экземпляру, указанному dm.theUser.getAllSubmissions()
.
Обратите внимание: , В Java объект передается по ссылке в методе, а метод возвращает ссылку на объект.
Что вам действительно нужно, так это скопировать список из dm.theUser.getAllSubmissions();
в toDisplay
. Вы можете использовать мелкую копию с чем-то вроде этого:
List<Submission> oldSubmissions = dm.theUser.getAllSubmissions();
ArrayList<Submission> toDisplay = new ArrayList<>(oldSubmissions);
Для глубокого копирования, пожалуйста, прочитайте Как сделать глубокое копирование объекта в Java?