扩展数组大小

时间:2014-09-08 01:02:00

标签: java

我正在尝试使用此逻辑扩展我的数组长度,但我仍然有outOfBounds异常..任何想法或评论帮助。看来我的逻辑不对 任何其他方式都可以做到这一点。或者对此进行任何更改都可以

public Student[] createNewArray(Student[] studentListArray){

        for(int i = 0; i < studentListArray.length; i++) {
            if (numberOfStudents == studentListArray.length) {
                newStudentListArray = new Student[studentListArray.length * 2];
                 newStudentListArray = studentListArray;
            }

        }
        return newStudentListArray;


    }

1 个答案:

答案 0 :(得分:1)

问题:
下面的行创建一个新数组,其长度是原始数据的两倍,然后将其分配给newStudentListArray变量:

newStudentListArray = new Student[studentListArray.length * 2];  // Line A

然后下面的行继续丢弃先前创建的未使用对象,并简单地将原始数组分配给同一个变量:

newStudentListArray = studentListArray;  // Line B

因此,上面的B行完全取消了A行上的单词。

解决方案:不要执行第二行 - 不要丢弃新创建的数组。而是使用System.arraycopy将数据从原始数组复制到新数组中。例如

newStudentListArray = new Student[studentListArray.length * 2];  // Line A
System.arraycopy(studentListArray, 0, newStudentListArray, 0, 
      studentListArray.length);