2

假设我们有一个盒子类:

class Box
{
    private int width;
    private int height;

    //Box Constructor
    public Box( int height )
    {
        this.height = height;
        width = 450;
    }

}

以及我们主要的一系列 Box 对象:

Box Box1 = new Box(147);
Box Box2 = new Box(178);
Box Box3 = new Box(784);

有没有办法使用“for”循环来遍历这些对象?另外,您将如何让计算机为我们创建类对象?例如。使用以下方法创建 10 个对象:

for( int i=0; i>10; i++)
{
    //method
}
4

7 回答 7

5

使用集合(或数组,但通常应首选集合):

List<Box> boxes = new ArrayList<Box>(10);
for (int i = 0; i < 10; i++) {
    boxes.add(new Box(i));
}
于 2012-11-19T15:49:58.333 回答
3

您可以将所有这些对象添加到数组(或)数组列表并循环它。

例子:

List<Box> boxList = new ArrayList<Box>();
boxList.add(box1);
boxList.add(box2);
boxList.add(box3);

for( int i=0; i < boxList.size(); i++)
{
    //method
}
于 2012-11-19T15:49:05.113 回答
3

我想你的意思是

for(int i=0; i<10; i++)

在Java中你会做

Box[] boxes = new Box[10];
for(int i=0; i<10; i++) boxes[i] = new Box(i);
于 2012-11-19T15:50:30.577 回答
2

您需要将对象组合在一个列表或数组中。然后,您可以遍历数组以创建对象和/或使用它们。

Box[] boxes = new Box[10];
for (int i = 0; i < 10; i++)
{
    boxes[i] = new Box(100);  // Create a new box object
}
于 2012-11-19T15:51:24.140 回答
1

为了遍历先前创建的对象,对象必须在某种集合中。可以使用 for 循环创建对象

for( int i=0; i<10; i++)
{
    new Box(i);
}
于 2012-11-19T15:50:48.750 回答
1

如果您希望避免 ArrayList 的内存和处理开销,而是使用普通数组。

非迭代创建

假设我们知道项目的数量。

Box[] boxes = {
  new Box(1),
  new Box(2),
  new Box(3)
};

迭代创建

Box[] boxes = new Box[numBoxes];
for (int i=0; i<numBoxes; i++){
  boxes[i] = new Box(i);
}

迭代访问

for (Box b : boxes){
  doWhatever(b);
}
于 2012-11-19T16:57:43.900 回答
0

您需要一个用于创建对象的引用容器并将它们添加到其中。如果您需要不同的构造函数参数(如在您的示例中),您将需要一个容器:

Integer[] boxSpecifications = new Integer[] { 10, 187, 781, 321 };
List<Box> boxes = new ArrayList<Box>();

for (int i = 0; i < boxSpecifications.length; i++) {
  boxes.add( new Box( boxSpecifications[ i ] ) ) ;
}
于 2012-11-19T16:08:25.200 回答