2011-11-11 6 views
-1

해시 맵에서 값을 가져 와서 배열에 넣으려고하지만 null 포인터 예외가 계속 발생합니다.해시 맵에서 값을 가져와 배열에 저장하는 방법은 무엇입니까?

다른 방법이 있습니까?

//some code.... 
String n[]=new String[tcur.getCount()];; 
String t[]=new String[tcur.getCount()];; 
HashMap<Integer, String> typehashmap=new HashMap<Integer, String>(); 
HashMap<Integer, String> namehashmap=new HashMap<Integer, String>(); 

//some code.. 
String type[]=typehashmap.keySet().toArray(new String[typehashmap.size()]); 
String name[]=namehashmap.keySet().toArray(new String[namehashmap.size()]);   


for (int i=0;i<=type.length;i++) { 
    n[i]=namehashmap.get(nameiterator[i]).toString(); 
    System.out.println(n[i]); 
    t[i]=typehashmap.get(typeiterator[i]).toString(); 
    System.out.println (t[i]); 
} 

답변

2

왜 사용하지 않습니까?

Set<Integer> keys = namehashmap.keySet(); 
Collection<String> values = namehashmap.values(); 

값 컬렉션을 여러 가지 방법으로 사용할 수 있습니다. 당신이 달성하려고합니까,

keys.toArray(); 
values.toArray(); 
+0

(보기 소유자 클래스를 통해) 안드로이드의 목록보기에서 배열을 인쇄해야합니다. 배열로 컬렉션을 바꾸는 방법을 알 수있는 array.if가 필요합니다. 너무 도움이됩니다. 친절하게 도움이됩니다. –

+0

Collection toArray() 메서드가 작동하지 않습니까? –

+0

당신은 keys.toArray()와 values.toArray();라는 대답을 가지고 있습니다. –

0

진짜 질문은 : 당신은 여전히 ​​배열을 원하는 경우에

for(String value:values) { ... } 

, 어쩌면 당신이 할 싶어? 당신의 두 개의 HashMaps가 서로 연결되어 있고, 두 맵에서 같은 정수 키를 가진 엔트리가 함께 속한다고합시다.

private static class TypeName { 
    private String type; 
    private String name; 
} 

을 그리고 엔트리 세트를 사용할 수는 HashMap을 반복하는 가장 좋은 방법 이럴,

또한 해시 MAP됩니다 사용 : 그렇다면, 내가 먼저이 예에 대한 래퍼 클래스를 만드는 고려할 것

Map<A,B> map = new HashMap<A,B>(); 
for(Entry<A,B> entry : map.entrySet()) { 
    A a = entry.getKey(); 
    B b = entry.getValue(); 
    // do things 
} 
관련 문제