Ответ 1
Увы, Arrays.asList(..)
не работает с примитивами. Apache commons-lang имеет
Double[] doubleArray = ArrayUtils.toObject(durationValueArray);
List<Double> list = Arrays.asList(doubleArray);
Когда я пытаюсь преобразовать двойной массив в DoubleListList, я получил следующую ошибку:
Исключение в потоке "main" java.lang.ClassCastException: [D не может быть добавлено в java.lang.Double
Ниже мой код.
double [] firstValueArray ;
ArrayList <Double> firstValueList = new ArrayList (Arrays.asList(firstValueArray));
Я сравниваю этот список с другим списком и присваиваю результат другой двойной переменной.
Пожалуйста, дайте мне знать причину этой ошибки.
Увы, Arrays.asList(..)
не работает с примитивами. Apache commons-lang имеет
Double[] doubleArray = ArrayUtils.toObject(durationValueArray);
List<Double> list = Arrays.asList(doubleArray);
Guava версия еще короче:
List<Double> list = Doubles.asList(doubleArray);
Справка:
Примечание: Это метод varargs. Все методы varargs можно вызывать с использованием массива того же типа (но не соответствующего типа boxed/unboxed!!). Эти два вызова эквивалентны:
Doubles.asList(new double[]{1d,2d});
Doubles.asList(1d,2d);
Кроме того, версия Guava не выполняет полный проход, это представление в реальном времени примитивного массива, преобразование примитивов в объекты только тогда, когда к ним обращаются.
Использование Java 8 Streams API достигается с помощью
DoubleStream.of(doublesArray).boxed().collect(Collectors.toList());
Если возврат ArrayList
в качестве реализации требуется, используйте
DoubleStream.of(doublesArray).boxed().collect(Collectors.toCollection(ArrayList::new));
Этот однострочный шрифт не требует дополнительных библиотек.
Благодарим за комментарий, который должен быть ответом:
ArrayList<Double> firstValueList = new ArrayList<Double>();
for(double d : firstValueArray) firstValueList.add(d);