2013-05-08 5 views
0

2D Array의 오브젝트로 ArrayList가 채워져 있습니다. ArrayList의 인덱스에서 2D Array의 Object 인덱스를 가져 오려고합니다. 예를 들어 :ArrayList에서 2D Array 인덱스 가져 오기

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 배열의 인덱스를 얻을 수있는 방법을 알고 있나요? (색인은 무작위입니다.) 궁금한 점이 있으면 알려주세요. 감사!

답변

3

인덱스가 map의 요소에 액세스하는 데 사용되지만 개체에 포함되어 있지 않기 때문에 인덱스를 직접 검색 할 수 없습니다. 객체 자체는 배열 내부에 있다는 단서를 가지고 있지 않습니다.

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; 
    } 
} 

하고 그냥 통과 :

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; 
} 

당신은 심지어 일반 홀더로 작동하는 래퍼 클래스를 가질 수 있습니다

더 좋은 방법은 개체 자체의 내부 인덱스를 저장하는 것입니다 이 대신 원래 개체입니다.

그러나 논리적으로 2D 배열에 배치 할 필요가없는 경우이 시점에서 2D 배열없이 래퍼를 사용할 수 있습니다.

+0

대단히! 글쎄, 당신의 제안을 사용합니다, 감사합니다! – Evorlor