【发布时间】:2018-09-07 17:46:33
【问题描述】:
我创建了包含数组students 的类Course。该数组包含字符串形式的学生姓名。
我的新目标是从 Array 转换为 ArrayList。我真的不知道该怎么做。我已经阅读了 ArrayList 并且我相信它是可调整大小的,我认为在这种情况下会很好用,因为我的 dropSutdent 和 addStudent 方法可能会不断变化,而不是设置数组规模为 100,但只有 20 名学生。
我非常感谢并解释/建议如何准确地更改为 ArrayList 而不是 Array。
注意 对于任何错误或我留下不清楚的地方,我深表歉意。这是我在 StackOverflow 上的第一个问题,我知道你们对问题的提问非常严格,所以我提前道歉。*
class Course {
private String courseName;
private String[] students = new String[100];
private int numberOfStudents;
public Course(String courseName) {
this.courseName = courseName;
}
public void addStudent(String student) {
int add = numberOfStudents - students.length; //Create integer to find how many slots we need
if (numberOfStudents > students.length) { //if # of students is bigger then size of array,
String[] array = new String[students.length + add]; //then we add slots to the array.
System.arraycopy(students, 0, array, 0, students.length); //copy array
students = array;
}
students[numberOfStudents++] = student; //add student.
}
public String[] getStudents() {
return students;
}
public int getNumberOfStudents() {
return numberOfStudents;
}
public String getCourseName() {
return courseName;
}
public void dropStudent(String student) {
for (int i = 0; i < students.length; i++) {
if (student == (students[i])) { //If student matches the student we want to remove.
numberOfStudents--; //remove student
while (i < numberOfStudents) {
students[i] = students[i+1];
i++;
}
}
}
}
public void clear() {
students = new String[1]; //set size to 1
numberOfStudents--; //remove all students
}
}
【问题讨论】:
-
你的理解还不错。我认为如果遇到一些您无法解决的困难,您应该尝试并回来。
-
如果我理解正确的话,这很简单。只需将
private String[] students = new String[100];更改为thisList<String> students = new ArrayList<>();,然后您的addStudent方法将在内部调用列表add方法,dropStudent将在内部调用列表remove方法。也不要比较像student == (students[i])这样的字符串,而是使用equals方法。
标签: java arrays arraylist void