У меня есть школьное задание, где мне нужно создать базовый клон ArrayList в Java. Нужно работать только со строками и иметь минимальную функциональность (размер, добавление, получение). Это то, что я до сих пор. Я понимаю, что, возможно, есть много вещей, которые можно улучшить, но сейчас я пытаюсь устранить эту ошибку
Exception in thread "main" java.lang.NullPointerException
at pt2.ArrayListMine.expand(ArrayListMine.java:13)
at pt2.ArrayListMine.add(ArrayListMine.java:32)
at pt2.Driver.main(Driver.java:21
Я думаю, что проблема в том, что когда я вызываю expand () вместо перемещения строк из массива в резервную копию, а затем из резервной копии в массив, в нем передаются указатели, поэтому после того, как я его вызываю, у меня эффективно получается массив, указывающий на резервную копию, указывающую на массив. Я не уверен, если / как я мог заставить его передать строку вместо указателя, поэтому я надеюсь, что смогу получить какой-то совет. Спасибо!
package pt2;
public class ArrayListMine {
private String[] array;
private String[] backup;
private int array_size = 0;
public void ArrayListMine() {
array = new String[10];
}
private void expand() {
if(array_size == array.length) {
for(int l = 0; l < array.length; l++) {
backup[l] = array[l];
}
int new_size = (int) (array.length * 2);
array = new String[new_size];
for(int l = 0; l < backup.length; l++) {
array[l] = backup[l];
}
}
}
public int size() {
return array_size;
}
public void add(String value) {
array_size = array_size + 1;
System.out.println(array_size);
expand();
array[array_size - 1] = value;
}
public String get(int index) {
return array[index];
}
}