java - into - pass arraylist to array
Recuperar la matriz primitiva después de la inserción en una ArrayList de matrices primitivas en Java (4)
List<double[]> x = new ArrayList<double[]>();
x.add(new double[]={1,2,3,4,54,6});
Se añaden elementos 1,2,3,4,54,6 a x
x.get(0) ---> returns 1
¿Pero haciendo esto, se agrega la dirección de la matriz? por qué
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)
Esto se debe a que la List
se compone de double[]
lugar de double
.
Debido a que un double[]
es una matriz, también debe especificar la posición de esa matriz. Al igual que:
x.get(0)[0]
Si desea poder usar solo x.get()
, su List
debe estar compuesta de primitivas double
. Luego, puede agregar la matriz de doubles
a la List
usando un método separado (no sé de uno que esté integrado):
List<Double> addArray(List<Double> o, double[] a) {
for(Double d : a)
o.add(d);
return o;
}
Esperemos que tenga sentido. Me gusta usar nombres de variables cortos para aclarar la lógica. Mientras sepa cuáles son las variables, debería estar bien.
La implementación predeterminada de toString()
de cualquier Object
(incluida la double[]
) es el retorno de la dirección del objeto. Esto es lo que está impreso por su código.
Si solo desea que su lista almacene los dobles en lugar de matrices de dobles, cambie lo que la lista está almacenando
List<Double> doubleList = new ArrayList<Double>();
Luego puede agregar la matriz como una lista a su lista, lo que significará que la lista está almacenando los valores en lugar de la matriz. Esto le dará el comportamiento que get(0)
le dará 1 en lugar de la dirección del arreglo
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
double[]
matriz double[]
es un objeto. Entonces, obtienes una dirección y la matriz completa se agrega en el índice 0.
Puede usar Arrays.toString(x.get(0))
para obtener una impresión de matriz legible.
toString () para una matriz es imprimir [, seguido de un carácter que representa el tipo de datos de los elementos de la matriz, seguido de @ y luego la dirección de la memoria.