pass from convertir como asarray array java arrays collections multidimensional-array arraylist

java - from - Convierta objeto[][] a ArrayList<Object[]>



list to[] java (5)

Creo que probablemente esta pregunta ha sido formulada / respondida varias veces antes de mi publicación. Pero no pude obtener exactamente lo que estoy buscando, así que lo publico de nuevo:

Estoy tratando de hacer esto:

float[][] fa2 = {{7,2}, {5,4}, {9,6}, {4,7}, {8,1}, {2,3}}; ArrayList<Float[]> AF = new ArrayList<Float[]>(); AF = Arrays.asList(fa2);

Pero está dando un error:

Type mismatch: cannot convert from List<float[]> to ArrayList<Float[]>

Entiendo el motivo del error, pero ¿cuál es la forma más conveniente de hacer la conversión en Java?

Esta es la forma más fácil que se me ocurre. ¿Hay algo mejor / más conveniente?

float[][] fa2 = {{7,2}, {5,4}, {9,6}, {4,7}, {8,1}, {2,3}}; ArrayList<Float[]> AF = new ArrayList<Float[]>(fa2.length); for (float[] fa : fa2) { //initialize Float[] Float[] Fa = new Float[fa.length]; //copy element of float[] to Float[] int i = 0; for (float f : fa) { Fa[i++] = Float.valueOf(f); } //add Float[] element to ArrayList<Float[]> AF.add(Fa); }


Como está convirtiendo de float[] a Float[] , debe hacerlo manualmente:

float[][] fa2 = {{7,2}, {5,4}, {9,6}, {4,7}, {8,1}, {2,3}}; ArrayList<Float[]> AF = new ArrayList<Float[]>(); for(float[] fa: fa2) { Float[] temp = new Float[fa.length]; for (int i = 0; i < temp.length; i++) { temp[i] = fa[i]; } AF.add(temp); }

O simplemente podrías estar usando float[] todo el camino:

List<float[]> AF = Arrays.asList(fa2);


Esto funcionó para mí:

float[][] fa2 = {{7f,2f}, {5f,4f}, {9f,6f}, {4f,7f}, {8f,1f}, {2f,3f}}; List<float[]> AF = Arrays.asList(fa2);

EDITAR: Si por alguna razón DEBES mezclar float [] y Float [], usa Apache Commons ArrayUtils.toObject

float[][] fa2 = {{7f,2f}, {5f,4f}, {9f,6f}, {4f,7f}, {8f,1f}, {2f,3f}}; List<Float[]> AF = new ArrayList(fa2.length); for (float[] fa : fa2) { AF.add(ArrayUtils.toObject(fa)); }


Otra forma en que podrías hacer esto:

float[][] fa2 = {{7,2}, {5,4}, {9,6}, {4,7}, {8,1}, {2,3}}; ArrayList<float[]> AF = new ArrayList<float[]>((Collection<float[]>)Arrays.asList(fa2))

Olvidé agregar el elenco ... lo arreglé.


Puedes hacerlo así y no necesitas convertir:

Float[][] test = {{2f,3f},{3f,4f}};

El concepto que permite envolver a los nativos en Java para que se conviertan en Objetos se llama AutoBoxing, que se usa aquí. Sin embargo, para que esto funcione, tienes que decir específicamente que los números son flotantes o emitirlos con (float).


tratar

float[][] fa2 = {{7,2}, {5,4}, {9,6}, {4,7}, {8,1}, {2,3}}; List<float[]> af = Arrays.asList(fa2);

o

Float[][] fa2 = {{7f,2f}, {5f,4f}, {9f,6f}, {4f,7f}, {8f,1f}, {2f,3f}}; List<Float[]> af = Arrays.asList(fa2);