【问题标题】:Converting from an array to an array list in Java在 Java 中从数组转换为数组列表
【发布时间】:2018-09-07 17:46:33
【问题描述】:

我创建了包含数组students 的类Course。该数组包含字符串形式的学生姓名。

我的新目标是从 Array 转换为 ArrayList。我真的不知道该怎么做。我已经阅读了 ArrayList 并且我相信它是可调整大小的,我认为在这种情况下会很好用,因为我的 dropSutdentaddStudent 方法可能会不断变化,而不是设置数组规模为 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&lt;String&gt; students = new ArrayList&lt;&gt;();,然后您的addStudent 方法将在内部调用列表add 方法,dropStudent 将在内部调用列表remove 方法。也不要比较像 student == (students[i]) 这样的字符串,而是使用 equals 方法。

标签: java arrays arraylist void


【解决方案1】:

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()
    {

    }


}

你可以随心所欲地实现。

【讨论】:

    【解决方案2】:

    List 在内部处理大小调整,这意味着您可以通过使用它而不是数组来删除大部分样板。

    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();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-02-06
      • 2015-07-08
      • 1970-01-01
      • 2020-08-08
      • 1970-01-01
      • 2014-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多