Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中从数组到数组列表的转换_Java_Arrays_Arraylist_Void - Fatal编程技术网

Java中从数组到数组列表的转换

Java中从数组到数组列表的转换,java,arrays,arraylist,void,Java,Arrays,Arraylist,Void,我创建了类课程,其中包含数组学生。此数组包含字符串形式的学生姓名 我的新目标是将数组转换为ArrayList。我真的不知道该怎么办。我已经阅读了ArrayList,我相信它可以调整大小,我认为在这种情况下会很好,因为我的dropsudent和addStudent方法可能会不断改变学生数量,而不是将数组大小设置为100,但只有20个学生 我非常感谢您对如何准确地更改为ArrayList而不是Array的解释和建议 请注意,如果我有任何错误或不清楚的地方,我表示歉意。这是我关于StackOverfl

我创建了类
课程
,其中包含数组
学生
。此数组包含字符串形式的学生姓名

我的新目标是将数组转换为ArrayList。我真的不知道该怎么办。我已经阅读了ArrayList,我相信它可以调整大小,我认为在这种情况下会很好,因为我的
dropsudent
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
    }
}
课程{
私有字符串courseName;
私有字符串[]学生=新字符串[100];
私人学生;
公共课程(字符串课程名称){
this.courseName=courseName;
}
公共学生(字符串学生){
int add=numberOfStudents-students.length;//创建整数以查找需要多少插槽
如果(numberOfStudents>students.length){//if#的学生数大于数组的大小,
String[]数组=新字符串[students.length+add];//然后我们将插槽添加到数组中。
System.arraycopy(students,0,array,0,students.length);//复制数组
学生=数组;
}
学生[numberOfStudents++]=student;//添加学生。
}
公共字符串[]getStudents(){
留学生;
}
公共int getNumberOfStudents(){
返回学生人数;
}
公共字符串getCourseName(){
返回courseName;
}
公共学生(字符串学生){
for(int i=0;i
列表
处理内部大小调整,这意味着您可以使用它而不是数组来删除大部分样板文件

class Course {
    private String courseName;
    private List<String> students = new ArrayList<>();

    public Course(String courseName) {
        this.courseName = courseName;
    }
    public void addStudent(String student) {
        students.add(student);
    }
    public List<String> getStudents() {
        return students;
    }
    public int getNumberOfStudents() {
        return students.size();
    }
    public String getCourseName() {
        return courseName;
    }
    public void dropStudent(String student) {
        while (students.remove(student));
    }
    public void clear() {
        students.clear();
    }
}
课程{
私有字符串courseName;
private List students=new ArrayList();
公共课程(字符串课程名称){
this.courseName=courseName;
}
公共学生(字符串学生){
学生。添加(学生);
}
公众学生名单{
留学生;
}
公共int getNumberOfStudents(){
返回学生。大小();
}
公共字符串getCourseName(){
返回courseName;
}
公共学生(字符串学生){
while(student.remove(student));
}
公共空间清除(){
学生们,清除();
}
}

ArrayList非常有用,但如果需要更多选项,您可以创建一个类似list的类,并根据需要实现所有方法

学生示例:

public class studentList{

    int size;
    Student [] list;

    public studentList()
    {
        size = 0;
        list = new Student[size];
    }
    public studentList(int size)
    {
        this.size = size;
        list = new Student[size];
    }

    public void add(Student s)
    {

    }
    public void remove(Student s)
    {

    }
    public void sort()
    {

    }


}

你可以随心所欲地实施。

你的理解相当不错。我认为,如果你遇到了一些你无法解决的困难,你应该试着回来。如果我理解你的话,这很简单。只需更改
私有字符串[]学生=新字符串[100]
到这个
列表students=new ArrayList()
然后您的
addStudent
方法将在内部调用list
add
方法,
dropStudent
将在内部调用list
remove
方法。也不要像这样比较字符串
student==(students[i])
而是使用
equals
方法。