如何在 Java 中调整数组大小?



我一直在尝试创建自己的Array类,它是动态的,但我无法弄清楚问题所在 调整其大小。我创建了单独的函数来检查数组是否已满并调整其大小。但我认为它不能称之为其中任何一个。

public class Array {
private int[] array;
private int size;
public int pointer;
private static int DEFAULT_SIZE = 5;

Array() {
this(DEFAULT_SIZE);
}

Array(int size) {
this.size = size;
this.array = new int[size];
}

public void add(int element) {
if (isFull()) {
resize();
}
array[pointer] = element;
pointer++;
}
private boolean isFull() {
return pointer == array.length;
}
private void resize() {
int[] temp = new int[size * 2];
for (int i = 0; i < array.length; i++) {    
temp[i] = array[i];
}
array = temp;
}

public void print() {
for (int i = 0; i < size; i++) {
System.out.println(array[i]);
}
}
}

分配更大的数组后,您永远不会更新size

private void resize() {
int[] temp = new int[size * 2];
for (int i = 0; i < array.length; i++) {    
temp[i] = array[i];
}
array = temp;   
}

这将使size处于初始值5。您必须在方法的末尾添加size *= 2(或在开始时,然后只执行new int[size])。

请注意,size字段是完全多余的,因为它已经通过array.length(您已经在循环条件下使用)进行跟踪和访问。

print似乎是不正确的,因为它总是打印整个数组,甚至是尚未添加的项目。您可能希望用户pointer而不是size(否则,您将打印大量零):

public void print() {
for (int i = 0; i < pointer; i++) {
System.out.println(array[i]);
}
}

最新更新