Возвращение примитивного массива после вставки в ArrayList примитивных массивов в Java
List<double[]> x = new ArrayList<double[]>();
x.add(new double[]={1,2,3,4,54,6});
элементы 1,2,3,4,54,6 добавляются к x
x.get(0) ---> returns 1
Но как это сделать, добавляется адрес массива? почему
List<double[]> x = new ArrayList<double[]>();
double[] name=new double[5];
name[0]=1
name[1]=3;
name[2]=3;
.
.
.
.
x.add(name);
getting x.get(0) ---> returns @as12cd2 (address of the array)
Ответы
Ответ 1
Это связано с тем, что List
состоит из double[]
вместо double
.
Поскольку a double[]
- это массив, вы должны также указать позицию из этого массива. Например:
x.get(0)[0]
Если вы хотите просто использовать x.get()
, ваш List
должен состоять из примитивов double
. Затем вы можете добавить массив doubles
к List
с помощью отдельного метода (я не знаю одного из встроенных):
List<Double> addArray(List<Double> o, double[] a) {
for(Double d : a)
o.add(d);
return o;
}
Надеюсь, это имеет смысл. Мне нравится использовать короткие имена переменных, чтобы сделать логику более ясной. Пока вы знаете, что такое переменные, вы должны быть в порядке.
Ответ 2
Если вы просто хотите, чтобы ваш список сохранял дубликаты вместо массивов двойников, измените то, что хранится в списке
List<Double> doubleList = new ArrayList<Double>();
Затем вы можете добавить массив в список в список массивов, который будет означать, что список хранит значения, а не массив. Это даст вам поведение, которое get(0)
даст вам 1, а не адрес массива
Double[] doubleArray = {1.0, 2.0, 3.0, 4.0, 54.0, 6.0 };
doubleList.addAll(Arrays.asList(doubleArray));
doubleList.get(0); //gives 1.0
Ответ 3
double[]
массив - это объект. Итак, вы получаете адрес и весь массив добавляется в индекс 0.
Вы можете использовать Arrays.toString(x.get(0))
для получения читаемой печати массива.
toString() для массива должен печатать [, за которым следует символ, представляющий тип данных элементов массива, за которым следует @, а затем адрес памяти.
Ответ 4
Реализация по умолчанию toString()
любого Object
(включая double[]
) - это возврат адреса объекта. Это то, что печатается вашим кодом.