Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > преобразование "Double[]" to "double[]


Автор: transserg 26.2.2011, 19:28
Доброго вечера всем. столкнулся с проблемой. Не могу выполнить преобразование из Double[] в double[] и наоборот. как это можно сделать без цикла?

Автор: _Y_ 26.2.2011, 21:34
А разве можно преобразовать без цикла? Это вроде совершенно разные вещи: double - примитив, а Double - класс. Даже если есть библиотека это делающая, внутри себя она скорее всего цикл и использует. 

Или я чего-то не понимаю?

Автор: Connie 27.2.2011, 14:31
Double[] - ссылка на массив значений типа Double
double[] - ссылка на массив значений типа double

одно в другое не преобразуется, а вот так можно
Код

Double[] arrD = {new Double(3.15),new Double(9.81)};
double [] arrd = new double[2];//Ссылка на массив размером два элемента, которые еще не инициализированы
for(int i=0;i<addD.size;i++){
   arrd[i] = arrD[i];
}

Автор: _sten_ 1.3.2011, 00:14
org.apache.commons.lang.ArrayUtils.toPrimitive(arrD);

Одной строкой smile

Автор: jk1 1.3.2011, 03:19
Цитата

Одной строкой


А внутри у этого метда все равно цикл:

Код

2622    public static double[] toPrimitive(Double[] array) {
2623        if (array == null) {
2624            return null;
2625        } else if (array.length == 0) {
2626            return EMPTY_DOUBLE_ARRAY;
2627        }
2628        final double[] result = new double[array.length];
2629        for (int i = 0; i < array.length; i++) {
2630            result[i] = array[i].doubleValue();
2631        }
2632        return result;
2633    }


Как уже говорилось выше, без цикла тут обойтись нельзя.

Автор: _sten_ 1.3.2011, 22:46
ну да, только самому его писать не надо

Автор: _Y_ 1.3.2011, 23:19
Цитата(_sten_ @ 1.3.2011,  22:46)
ну да, только самому его писать не надо

Сравниваем два кода - у меня даже короче получилось smile 
Код

arrd=org.apache.commons.lang.ArrayUtils.toPrimitive(arrD);
for(int i=0;i<arrD.length;i++)arrd[i]=arrD[i];

Впрочем, если длину массива arrd надо сначала объявить, то то прав не несколько буквочек smile 

Автор: _sten_ 6.3.2011, 11:27
_Y_, вы что то слышали о переиспользовании кода?

org.apache.commons.lang.ArrayUtils.toPrimitive(arrD);
написан и протестирован программистами из Apache и заслуживает доверия, а ваш вариант не протестирован....

во вторых, ваш код выполняет только часть поставленного задания. 

в третьих, какой вариант проще читать(и понять что он делает)?

не говоря уже об экономии на фигурных скобках....


единственная проблема org.apache.commons.lang.ArrayUtils.toPrimitive(arrD); то что это из third-party библиотеки, которую не всегда есть возможность подключить....

Автор: _Y_ 6.3.2011, 20:10
 smile дискуссия похоже перешла в полнейший оффтоп. Ну и ладно. Воскресенье все-таки smile
Цитата(_sten_ @ 6.3.2011,  11:27)
_Y_, вы что то слышали о переиспользовании кода?

Спасибо. Улыбнуло. Код-то в одну строку smile

Цитата(_sten_ @ 6.3.2011,  11:27)
....написан и протестирован программистами из Apache и заслуживает доверия, а ваш вариант не протестирован....

Тоже улыбнуло. smile 

Цитата(_sten_ @ 6.3.2011,  11:27)
в третьих, какой вариант проще читать(и понять что он делает)?

Мой, конечно, поскольку он использует только самые базовый синтаксис Java, не требуя знания сторонних библиотек. 

Впрочем, у меня был один знакомый с абсолютной памятью и полным отсутствием других мозговых функций - они были просто не нужны, т.к. помнил все. Для него было проще помнить все особенности раз прочитанных описаний, чем разобраться в простейшей формуле. Думаю он не единственный на свете. Поэтому, с целью дотошности, ответ должен быть неоднозначным - кому-то проще мой код, кому-то Ваш smile 

Цитата(_sten_ @ 6.3.2011,  11:27)
единственная проблема ... third-party библиотеки, которую не всегда есть возможность подключить....

Вот об этом я даже и не подумал сам; уж точно должен согласиться. Библиотеки ИМХО надо прикручивать когда они нужны, а не из любви к искусству.

..........................
transserg
, этот начавшийся спор воспринимайте, пожалуйста, как чисто теологический. Используйте тот метод, который лучше подходит к конкретной задаче.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)