2014-11-10 2 views
0

Я хочу сохранить LinkedHashMap значение в double тип array. Как это сделать ?Как сохранить значение LinkedHashMap в массив двойного типа

Я пытался таким образом

Double[] avg= (Double[]) averageMap.values().toArray(); 

где averageMap является:

LinkedHashMap<String, Double> averageMap = new LinkedHashMap<String, Double>(); 

, но у меня есть следующее исключение:

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Double; 
+2

Хорошо, в чем проблема и вопрос? –

+0

@ sᴜʀᴇsʜᴀᴛᴛᴀ, когда я делаю, как указано выше, затем появляется следующая ошибка: -java.lang.ClassCastException: [Ljava.lang.Object; не может быть применено к [Ljava.lang.Double; –

+0

Вы попробовали существующий ответ? –

ответ

0

Ниже код будет работать для вас, но его не хватает

 Object[] objArray = averageMap.values().toArray(); 
     double[] dblArray = new double[objArray.length]; 
     for (int i = 0; i < objArray.length; i++) { 
      dblArray[i] = Double.parseDouble(objArray[i].toString()); 
     } 

averageMap.values().toArray(); метод возвращает объект [], так что вы должны бросить его удвоить или Парс хорошо это в два раза []

но его не хорошая практика, чтобы разобрать его double.instead двойного использования двойного class.it является класс обертку так Autoboxing производится автоматически, поэтому нет необходимости беспокоиться

+0

Я должен, наконец, сохранить значение LinkedHaspMap в двоичном типе массива i.e примитивного типа, так как это значение будет использоваться далее в методе ChartDirector.XYChart, который принимает примитивные аргументы типа. –

+0

, чем попробовать эту работу для вас –

1

toArray функция может быть немного сложнее. Он возвращает Object[], который не может быть отлит до Double[]. Вы должны использовать этот код вместо:

Collection<Double> values = averageMap.values(); 
Double[] avg = values.toArray(new Double[values.size()]);