2012-05-20 4 views
0

질문을 정성스럽게하지 말고 용서해주십시오. 나는 아래의 예제가 내가 의미하는 바를 말해 줄 것이라고 확신한다. hashmap에서 anObject의 모든 값을 가져와야합니다. 아래 예제에서 볼 수 있듯이 키는 anObject이고 값은 anObject의 배열입니다.해시 맵 값에서 객체 배열의 배열을 가져 오는 방법은 무엇입니까?

HashMap<anObject,anObject[]> testMap = new HashMap<anObject,anObject[]>(); //Define map 

anObject someObject1 = new anObject("one"); 
anObject someObject2 = new anObject("two") 

anObject[] manyObjects1 = new anObject[3]; 
manyObjects1[0] = new anObject(0); 
manyObjects1[1] = new anObject(1); 
manyObjects1[2] = new anObject(2); 
anObject[] manyObjects2 = new anObject[3]; 
manyObjects2[0] = new anObject(0); 
manyObjects2[1] = new anObject(1); 
manyObjects2[2] = new anObject(2); 

testMap.put(someObject1,manyObjects1); 
testMap.put(someObject2,manyObjects2); 

//Get anObject from all the values put into testMap 
anObject[] getAllValues1 = (anObject[])testMap.values().toArray; //is this correct or 
anObject[][] getAllValues2 = (anObject[][])testMap.values().toArray; //is this correct 
+1

둘 중 어느 것도 컴파일되지 않습니다. – Jeffrey

+1

배열에 대한 컬렉션 (목록, 집합 등)을 선호합니다. 배열로 변환 할 필요가 없습니다. 직접 반복 할 수 있으며 배열에없는 유용한 메소드와 기능을 많이 가지고 있습니다. –

+0

참으로 도움이 필요합니다. 그게 내가 왜 게시 – user859385

답변

0

당신은 toArray(T[]) 사용하고자하는 것 :

Collection values = testMap.values(); 
anObject[][] getAllValues2 = (anObject[][])values.toArray(new anObject[values.size()][]); 

다시지도에있는 값의 배열을 받고있어, 맵의 값이 배열 때문에, 당신은 표시 할 필요가 배열 배열을 되 찾을 수 있습니다. 따라서 [][].

+0

오, 고마워요! 너는 내 하루를 구했다! – user859385

+0

@ user859385 : 걱정할 필요가 없습니다. 편집을 주목하면,'toArray'의 반환 값에 대한 캐스트가 필요합니다. –

+0

그것이 작동하지 않는다는 것을 알게되었습니다. (괄호 또는 일종의 누락 된 문자가있는 것 같습니다. Station [] [] allValues ​​= values.toArray (Station [] [values.size()]); – user859385

관련 문제