如何用对象手动填充数组?

时间:2013-11-01 10:41:26

标签: java arrays object

我是java的新手,并且在了解如何手动填充对象数组时遇到了问题。我不想手动执行此操作的原因是因为我需要创建40个对象,其中20个对象转到arrayOne而其他20个对象转到arrayTwo。此外,每个对象都有一个独特的参数,如“Texas”或“Canada”,需要设置。

我通常会创建一个这样的数组:

long[] arrayOne;
arrayOne = new long[20];

并填充它,让我们通过循环或手动说数字。但是现在我正在处理对象并且正在努力解决这个问题,我尝试在StackOverflow上查找答案,但是无法理解那里到底发生了什么。

如果有帮助,这是我的对象的构造函数

    // Plane Constructor
    public Plane (int i, String dest, String airl, String airc, double t) {

            planeID = i;
            destination = dest;
            airline = airl;
            aircraft = airc;
            time = t;

    }// END Plane Constructor

5 个答案:

答案 0 :(得分:5)

我建议使用ArrayList而不是数组,因为列表可以增长,但数组是固定大小。但是,要回答你的问题:

Plane[] arrayOne = new Plane[20];
Plane[] arrayTwo = new Plane[20];

arrayOne[0] = new Plane(1001, "Timbuktu");
arrayOne[1] = new Plane(2930, "Siberia");
// etc.

arrayTwo[0] = new Plane(2019, "France");
arrayTwo[1] = new Plane(1222, "Italy");
// etc.

如果你使用了ArrayList,那就是:

List<Plane> arrayOne = new ArrayList<Plane>();
planes.add(new Plane(1001, "Timbuktu"));
planes.add(new Plane(2930, "Siberia"));
// etc.

或者,如果你真的很喜欢:

List<Plane> planes = new ArrayList<Plane>() {{
    add(new Plane(1001, "Timbuktu"));
    add(new Plane(2930, "Siberia"));
}};

在所有情况下,您都可以按如下方式迭代内容:

for (Plane plane : arrayOne) {
    System.out.println(plane.getDestination());
}

答案 1 :(得分:2)

Plane[] array = new Plane[10];
array[0] = new Plane(/*specify your parameters here*/)

查看Java语言规范的chapter 10

答案 2 :(得分:1)

您必须声明一个对象数组(在本例中为Plane),就像声明long - Plane[] arrayOne = new Plane[20];数组一样。然后,您可以使用索引以相同的方式访问元素。如果你真的必须手动填充它,你应该做类似的事情:

arrayOne[0] = new Plane(1, "foo", "bar", "baz", 1.0);
arrayOne[1] = new Plane(2, "fooo", "baar", "baaz", 2.0);

只有两件事与Object[]数组long[]的使用不同 - 数组的类型和事实,在某些时候你必须使用构造函数来创建对象。您可以使用以前创建的对象。

答案 3 :(得分:0)

首先创建Plane数组:

Plane[] planes = new Plane[20];

然后每个对象:

planes[0] = new Plane(...);

...

答案 4 :(得分:0)

如果interface的元素不一定是array的实例,则可以使用通用Plane

例如:

包裹测试;

public class Main {
    public static void main(String[] args) {
        Flyer[] flyers = new Flyer[] { new Plane(), new Bird() };
            for (Flyer f: flyers) {
                // you can only access method "fly" here, because it's the only
                // method defined in your interface, but nothing
                // stops you from adding more methods, as long as you implement 
                // them in the (non-abstract) classes
                f.fly();
            }
    }
}

class Plane implements Flyer {
    // TODO id, destination, airline, etc. getters/setters
    @Override
    public void fly() {
        System.out.println("Weeee I'm flying!");
    }
}

class Bird implements Flyer {
    // TODO whatever properties / getters / setters
    @Override
    public void fly() {
        System.out.println("Chirp chirp");
    }
}

interface Flyer {
    void fly();
}

输出:

Weeee I'm flying!
Chirp chirp