2011-11-11 8 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(); 

さまざまな方法で値コレクションを操作できます。

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

それでも配列をしたい場合は、多分あなたが欲しい:

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

ビューホルダークラスからリストビューでアンドロイドで印刷する必要があります.Array.ifを使用するとコレクションをarray.thatに変更する方法を伝えることができます。 –

+0

Collection toArray()メソッドはあなたのために機能しませんか? –

+0

あなたは答えkeys.toArray()とvalues.toArray();を取得しました。 –

0

本当の問題は、何を達成しようとするんですか?あなたの2つのHashMapsは相互に接続されていますか、両方のマップの同じ整数キーを持つエントリが一緒に属しているとしますか?もしそうなら、私が最初にこの例のためのラッパークラスを行うことを検討します:

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 
} 
関連する問題