#java #arraylist
#java #arraylist
Вопрос:
ArrayList<Student> list = new ArrayList<>();
/*Student just have (ID,name,semester and ArrayList<String> course */
int ID;
String name, semester;
ArrayList<String> course = new ArrayList<>();
Затем я добавляю в список какого-нибудь студента
ID= 123;
name = "Hoang Van Lam";
semester = "Spring2020";
course.add("JAVA");
course.add("C#");
course.add("PYTHON");
list.add(new Student(ID,name,semester,course));
course.clear();
После этого я хочу добавить больше учеников, я пытаюсь использовать course.clear();
для повторного использования cousre
.
Затем я понял, что course.clear
запускался до list.add ()
того, как его взяли.Итак, как я могу решить эту проблему? Спасибо всем
Комментарии:
1. Где не просто использовать course = new ArrayList<String>()?
2. Я использую ArrayList<String> course для хранения многих названий курсов студентов. Вот класс student: ` private int ID; private String name; private String semestr; private ArrayList<String> course; общедоступный студент () { } общедоступный студент (идентификатор int, строковое имя, строковый семестр, курс ArrayList<String>) { this. ID = идентификатор; this.name = name; this.semestr = семестр; this.course = курс; }`
3. Если вы повторно используете один и тот же экземпляр списка для
course
, не имеет значения, было ли это сделано до или послеlist.add()
, в конце у всех студентов будет один и тот же список курсов (тот, который вы добавляете последним)
Ответ №1:
Когда вы передаете объект конструктору, вы передаете его «ссылку», поэтому при вызове course.clear()
вы просто очищаете его, и теперь объект пуст в любом месте! Если вы хотите иметь новый список, вы можете создать его и использовать course
для повторного обращения к нему :
ID= 123;
name = "Hoang Van Lam";
semester = "Spring2020";
course.add("JAVA");
course.add("C#");
course.add("PYTHON");
list.add(new Student(ID,name,semester,course));
course= new ArrayList<>();