你能在java中写一个数组的特定索引吗?

时间:2017-10-25 04:52:36

标签: java

所以我正在尝试加载演员模型,最终这个类会变得非常大。所以我真的不想跟踪将它们全部写入我的实体数组(第40行),是否有更有效的方式来存储我的演员模型。使用索引?

我的代码看起来像这样..

12.    public static Entity[] callActors(Loader loader) {
13.
14.     //Earth Entity Actor        
15.     model = OBJLoader.loadObjModel("moon", loader);
16.     texture = new ModelTexture(loader.loadTexture("MoonMap1024x1024"));
17.     staticModel = new TexturedModel(model,texture);
18.     texture = staticModel.getTexture();
19.     texture.setShineDamper(10);
20.     texture.setReflectivity(0);
21.     //Assigned an Entity Actor
22.     Entity entity1 = new Entity(staticModel, new Vector3f(-1.40f,1,-6.0f),0,0,0,1);     
23.     
...
39.
40.      Entity[] entityArray = {entity1,entity2,entity3};
41.     
42.     return entityArray;
43. }

有没有办法在第22行使用这样的索引 Entity[] entityArray[1] = new Entity(staticModel, new Vector3f(-1.40f,1,-6.0f),0,0,0,1); 而不是一次性将所有演员都写入实体数组(第40行)?

3 个答案:

答案 0 :(得分:1)

您可以声明具有特定大小的Entity类型的数组,并使用索引在其中添加元素。您还可以维护索引变量。

 Entity[] arr = new Entity[10];
 arr [0]= new Entity(staticModel, new Vector3f(-1.40f,1,-6.0f),0,0,0,1);

OR

Entity[] arr = new Entity[10];
int i=0;
 arr [i]= new Entity(staticModel, new Vector3f(-1.40f,1,-6.0f),0,0,0,1);
 i++;
 arr [i]= new Entity(staticModel, new Vector3f(-1.40f,1,-6.0f),0,0,0,1);
 i++;

答案 1 :(得分:0)

不确定我是否正确,但如果您想要简单的方法来启动数组,您可以这样做:

Entity[] arr = new Entity[] {entity1, entity2, enttiy3};

如果要设置特定索引,可以使用hashMap(也可以更快地获取操作),这样做:

HashMap<Integer, Entitiy> Entity = new HashMap<Integer, Entitiy>();

有用的链接:

HashMap in Java

Arrays in java

答案 2 :(得分:0)

有没有办法像这样使用索引 第22行 Entity [] entityArray [1] =新实体(staticModel,new Vector3f(-1.40f,1,-6.0f),0,0,0,1); 而不是一次性将所有演员都写入实体数组(第40行)?

尝试访问一个实体时,无需使用数组符号( [] )。由于entityArray [1]表示一个实体(存储在数组entityArray中的位置1),因此您可以简单地写:

Entity[] entityArray = new Entity[ARRAY_SIZE];
entityArray[1] = new Entity(staticModel, new Vector3f(-1.40f,1,-6.0f),0,0,0,1);

但是,如果您希望在初始化实体后构建数据结构,则可以使用您编写的相同代码。