как получить значения из хэш-карты и поместить их в массив? - PullRequest
0 голосов
/ 11 ноября 2011

Я пытаюсь получить значения из хэш-карты и поместить их в массив, но получаю исключение нулевого указателя.

Есть ли другой способ сделать это?

//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 ]

3 голосов
/ 11 ноября 2011

Почему бы вам не использовать это?

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

Вы можете работать со сбором значений многими способами.

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

Если вам все еще нужны массивы, возможно, вы хотите сделать:

 keys.toArray();
 values.toArray();
0 голосов
/ 11 ноября 2011

Реальный вопрос в том, что вы пытаетесь достичь?Связаны ли два ваших HashMaps, скажем, записи с одинаковым целочисленным ключом на обеих картах принадлежат друг другу?Если это так, я сначала рассмотрел бы создание класса-оболочки для этого, например:

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

И использование HashMap

Более того, IMHO, лучший способ перебрать 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...