未添加到ArrayList的Java对象
问题描述:
我遇到问题。我正在为鱼编写一个生态系统的代码,并且正在尝试向现有的鱼ArrayList添加一个新的Fish对象。但是,当我检查ArrayList结果是空的?思考?未添加到ArrayList的Java对象
public void addFish(Fish f){
ArrayList<Fish> fishplusone = new ArrayList<Fish>(fish.size());
if (landscape[f.getRow()][f.getCol()] != ROCK) {
for (Fish otherfish: this.fish) {
if(otherfish.getRow() == f.getRow() && otherfish.getCol() == f.getCol()) {
throw new IllegalFishPositionException(IllegalFishPositionException.TWO_FISH_IN_ONE_PLACE);
}
else {
fishplusone.add(otherfish);
}
fishplusone.add(f);
fish = fishplusone;
}
}
答
您创建一个新的ArrayList每次:ArrayList<Fish> fishplusone = new ArrayList<Fish>(fish.size());
是不是更容易先做好检查,然后将其添加到现有的列表?
请编辑您的帖子,以便明智地缩进,并删除无关的代码。理想情况下,您应该展示一个简短但完整的程序来展示问题。例如,我们不知道'fish'变量是什么。 – 2013-05-04 17:17:06
也许'landscape [f.getRow()] [f.getCol()]'是一个'ROCK'或'this.fish'是空的(假设你没有得到任何异常)。 – assylias 2013-05-04 17:17:55
它是否总是抛出异常? – 2013-05-04 17:18:15