Java Coord ArrayList应具有相同的大小

Java Coord ArrayList应具有相同的大小,java,arraylist,iteration,Java,Arraylist,Iteration,在一个类似轰炸机的益智游戏中,这些线用来确定投弹的最佳地点(在两个板条箱之间)。这是一个13*11的网格 当我检查两个对象的大小时,一个存储X的对象比另一个对象大得多。 他们应该有两个相同的大小,每个坐标X和他的Y 由于第一个最好的移动在同一个Y轴上,我怀疑第二个arraylist没有创建一个新的房间来存储它们(但它是arraylist,没有设置成这样?) ArrayList bestSpotX=new ArrayList(); ArrayList bestSpotY=新的ArrayList()

在一个类似轰炸机的益智游戏中,这些线用来确定投弹的最佳地点(在两个板条箱之间)。这是一个13*11的网格


当我检查两个对象的大小时,一个存储X的对象比另一个对象大得多。 他们应该有两个相同的大小,每个坐标X和他的Y

由于第一个最好的移动在同一个Y轴上,我怀疑第二个arraylist没有创建一个新的房间来存储它们(但它是arraylist,没有设置成这样?)

ArrayList bestSpotX=new ArrayList();
ArrayList bestSpotY=新的ArrayList();
// ...
对于(int line=0,col=0;line为什么:

ArrayList bestSpotX=new ArrayList();
ArrayList bestSpotY=新的ArrayList();
而不是:

class LineColLocation {
  protected int line, col;

// constructors, setters and getters
}

ArrayList<LineColLocation> bestSpots=new ArrayList<LineColLocation>();    


int bestSpotLine=...; // ... whatever logic to ...
int bestSpotCol=...;  // determine a *best spot*

LineColLocation bestSpot=new LineColLocation(bestSpotLine, bestSpotCol);
bestSpots.add(bestSpot);
类的线条搭配{
受保护的内线,col;
//构造函数、setter和getter
}
ArrayList bestSpots=新的ArrayList();
int bestSpotLine=…;/…任何逻辑都可以。。。
int bestSpotCol=…;//确定*最佳点*
线条搭配bestSpot=新的线条搭配(bestSpotLine,bestSpotCol);
最佳点。添加(最佳点);
这样,您就不会意外地弄乱两个不同列表中相同数量的X和Y的**隐式要求*
——您只需具体化此约束(使其明确),不必验证此约束,您就可以确保每次都无法处理这些问题。

为什么:

ArrayList<Integer> bestSpotX=new ArrayList<Integer>();    
ArrayList<Integer> bestSpotY=new ArrayList<Integer>();
ArrayList bestSpotX=new ArrayList();
ArrayList bestSpotY=新的ArrayList();
而不是:

class LineColLocation {
  protected int line, col;

// constructors, setters and getters
}

ArrayList<LineColLocation> bestSpots=new ArrayList<LineColLocation>();    


int bestSpotLine=...; // ... whatever logic to ...
int bestSpotCol=...;  // determine a *best spot*

LineColLocation bestSpot=new LineColLocation(bestSpotLine, bestSpotCol);
bestSpots.add(bestSpot);
类的线条搭配{
受保护的内线,col;
//构造函数、setter和getter
}
ArrayList bestSpots=新的ArrayList();
int bestSpotLine=…;/…任何逻辑都可以。。。
int bestSpotCol=…;//确定*最佳点*
线条搭配bestSpot=新的线条搭配(bestSpotLine,bestSpotCol);
最佳点。添加(最佳点);

这样,您就不会意外地在两个不同的列表中弄乱**隐式要求*,
相同数量的X和Y
——您只需具体化此约束(使其明确),不必验证此约束,就可以确保每次都不会出错

“当我检查两个物体的大小时,一个放着X的物体比另一个大得多。“您的问题没有显示您检查此断言的代码。从提供的代码来看,在循环之前或之后,有很多可能出现错误。对不起,我的英语很差,Adrian。事实上,我对代码的其余部分很确定,因为它在简单数组上迭代时效果很好,但它迫使我“硬编码”长度(每场比赛,板条箱的位置都会发生变化,好的组合也会发生变化)。这就是我选择ArrayList的原因。“当我检查这两个对象的大小时,存放X的对象比另一个对象大得多。”您的问题没有显示您检查此断言的代码。从提供的代码来看,在循环之前或之后,有很多可能出现错误。对不起,我的英语很差,Adrian。事实上,我对代码的其余部分很确定,因为它在简单数组上迭代时效果很好,但它迫使我“硬编码”长度(每场比赛,板条箱的位置都会发生变化,好的组合也会发生变化)。这就是我选择ArrayList的原因。非常感谢。我是Java新手,我总是用C编写代码,需要考虑“Object”!非常感谢。我是Java新手,我总是用C编写代码,需要考虑“Object”!