java - 在没有 arrayList 的情况下向数组添加元素

标签 java arrays object

我正在尝试定义一个名为 add() 的方法,它将对象 Fish 添加到数组 Fish[] 中。如果不使用 arrayList 我该如何解决这个问题?我不断收到错误: 线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 1

public class Pond {
private Fish[] fish;
private int numFish ;
private int capacity;

public Pond(int capacity){
    this.capacity = capacity;
}
public int getNumFish(){ return numFish;
}
public boolean isFull(){//Ponds can only have so many fish
    boolean Full = false;
    if (numFish >= capacity){
        Full = true;}
    return Full;
}
public void add(Fish aFish) {// puts a fish in the pond--OR-- replaces a fish that has been temporarily removed 
    if (numFish < capacity){
        fish[numFish++] = aFish;}
}

最佳答案

这里是动态数组解决方案,它是 ArrayList 方法的简单实现。

public void add(Fish aFish) {
    ensureCapacity();
    fish[numFish++] = aFish;
}

private void ensureCapacity() {
    if (numFish == fish.length) {
        int newSize = fish.length * 2;
        Fish[] newFish = new Fish[newSize];

        System.arraycopy(fish, 0, newFish, 0, fish.length);
        fish = newFish;
    }
}

关于java - 在没有 arrayList 的情况下向数组添加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21492107/

相关文章:

java - 为什么无法通过公网ip访问服务器

Java ArrayList 搜索和删除

php - javascripts数组

C# 性能最佳实践 : object creation vs reuse

python - 这些代码行是做什么的? (运动模拟)

java - Android fragment 预加载数据

java - 如何处理java代码中的Unchecked强制转换警告

javascript - 如何使用 jQuery 根据用户输入创建 javascript 数组

c++ - 线性搜索类对象数组

Javascript:onclick函数获取元素