2011-11-11 87 views
-1

我想从哈希映射中拉出值并将它们放入数组中,但我不断收到空指针异常。如何从哈希映射中获取值并将它们放入数组中?

有没有其他方法可以做到这一点?

//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(); 

您可以使用多种方式处理值集合。

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

如果你仍然想阵列,也许你想要做的事:

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

通过视图持有人类我必须在Android的列表视图中打印它们需要一个数组。如果你可以告诉方法来改变集合到数组中。这也会做得很好。帮助。 –

+0

不收集toArray()方法为你工作? –

+0

你有回答,keys.toArray()和values.toArray();) –

0

真正的问题是,你试图完成什么?你的两个HashMap是否互相连接,比如说两个地图中的相同整数键都属于哪一个?如果是的话,我会首先考虑用包装类此例如:

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

,并使用HashMap的

而且,恕我直言,遍历一个HashMap的最好方法是使用条目集:

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 
} 
相关问题