toArray () возвращает объект [] - PullRequest
       23

toArray () возвращает объект []

0 голосов
/ 06 февраля 2020

Я пытаюсь преобразовать ArrayList в Array, используя toArray (), но он возвращает объект [] вместо double []. См. Ниже:

double [] arr = arrList.toArray(new Double[arrList.size()]);

Я получаю ошибку несовместимых типов.

Это то, что содержит arrList:

I/System.out: [0.0, 2.455430030822754, 1.834529995918274, 0.7368429899215698, -0.5264459848403931, -1.5101100206375122, -1.8526500463485718, -1.6131700277328491, -0.9388419985771179, 0.053711701184511185, 0.35541099309921265, -0.18560799956321716, -0.884518027305603, -1.4304900169372559, -1.5486400127410889, -0.943471014499, 0.0]

Вот как это получается:

private void rec(SensorEvent event) {

    double x = event.values[0];

    arrList.add(x);

}

Я пытался без определения размера массива (то есть с использованием нового Double [0]), хотя я не думал, что это будет проблемой, но это тоже не сработало.

Я искал похожие Q в Интернете, и все, что я нашел, было на примерах String, и я думаю, что проблема может быть в Double? Не слишком уверен.

Совершенно новый в этом, поэтому извинения, если это очевидно.

Ответы [ 2 ]

9 голосов
/ 06 февраля 2020
double [] arr = arrList.toArray(new Double[arrList.size()]);

double[] отличается от Double[]. В то время как Java может конвертировать между double и Double с автоматической коробкой и автоматической коробкой, он не может конвертировать из Double[] в double[]. Вы можете решить проблему с помощью:

Double [] arr = arrList.toArray(new Double[arrList.size()]);
5 голосов
/ 06 февраля 2020

Вы можете использовать:

Double[] array = arrList.toArray(Double[]::new);

Обратите внимание, что ссылки на методы были введены в java 8, а метод в java 11. Пожалуйста, обратитесь к ответу Code-Apprentice для java 7 compilant решение.

...