我有一个2D数组中充满对象的数组列表。我想在数组列表的下标处得到二维数组中对象的下标。例如:
Object map[][] = new Object[2][2];
map[0][0] = Object a;
map[0][1] = Object b;
map[1][0] = Object c;
map[1][1] = Object d;
List<Object> key = new ArrayList<Object>();
key.add(map[0][0]);
key.add(map[0][1]);
key.add(map[1][0]);
key.add(map[1][1]);
我想做的是:
getIndexOf(key.get(0)); //I am trying to get a return of 0 and 0 in this instance, but this is obviously not going to work
有谁知道我如何在特定位置获得二维数组的索引?(索引是随机的)。如果有任何问题请告诉我。谢谢!
不能直接检索索引,因为索引用于访问map
中的元素,但它们不包含在对象中。对象本身不知道是否在数组中。
更好的方法是将索引存储在对象本身中:
class MyObject {
final public int x, y;
MyObject(int x, int y) {
this.x = x;
this.y = y;
}
}
public place(MyObject o) {
map[o.x][o.y] = object;
}
你甚至可以有一个包装器类作为泛型持有人:
class ObjectHolder<T> {
public T data;
public final int x, y;
ObjectHolder(int x, int y, T data) {
this.data = data;
this.x = x;
this.y = y;
}
}
然后传递这个而不是原来的对象
但是,如果您在逻辑上不需要将它们放在2D数组中,此时您可以直接使用包装器,而不使用任何2D数组。