获取ArrayList中的2D数组索引

时间:2013-05-08 01:24:01

标签: java arraylist indexing multidimensional-array

我有一个ArrayList填充了2D数组中的对象。我想在ArrayList的索引处获取2D数组中Object的索引。例如:

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

有谁知道如何在特定位置获取2D数组的索引? (索引是随机的)。如果您有任何疑问,请告诉我。谢谢!

1 个答案:

答案 0 :(得分:3)

您不能直接检索索引只是因为索引用于访问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数组的包装器。