Как считать массив из хэш-карты? - PullRequest
1 голос
/ 13 декабря 2010

У меня проблема с пониманием того, как считывать массив, который я помещаю в хэш-карту. (Между прочим, мне нужно поместить разные типы данных в хеш-карту, отдельные значения, а также массивы, поэтому я использую универсальный тип "Object").

Пример кода:

HashMap map = new HashMap();

map.put("two", new int[]{1,2});

int[] myArray = new int[2]:

myArray = (int[])map.get("two");

System.out.println("Array value "+myArray[0]);

System.out.println("Array value "+myArray[1]);

Я получаю ошибку во время выполнения ...

Я надеюсь, что кто-нибудь может дать мне подсказку. Я не могу найти свою ошибку.

Большое спасибо. Штеффен

Ответы [ 2 ]

1 голос
/ 13 декабря 2010

Проблема в этой строке:

int[] myArray = new int[2]:

измените его на

int[] myArray = new int[2];

За исключением того, что с фрагментом проблем нет.

0 голосов
/ 13 декабря 2010

Этот код должен работать нормально, за исключением этой строки:

int[] myArray = new int[2]:

, который использует двоеточие вместо точки с запятой и бессмысленно создает новый массив. Учитывая, что вы говорите, что получаете ошибку в время выполнения , я подозреваю, что это не проблема - но это трудно сказать, учитывая, что вы еще не сказали, что это за ошибка.

Я бы также предложил использовать обобщения, а не необработанный тип, даже если тип значения просто Object. Вот короткая, но полная программа, показывающая, как она работает:

import java.util.*;

public class Test {
  public static void main(String[] args) {
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("two", new int[] { 1, 2 });
    int[] myArray = (int[]) map.get("two");
    System.out.println("Array value " + myArray[0]);
    System.out.println("Array value " + myArray[1]);
  }
}

Выход:

Array value 1
Array value 2

Учитывая, что этот код работает, пожалуйста, опубликуйте короткую, но полную программу, которая не работает - или по крайней мере скажите нам, какую ошибку вы действительно получаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...