Pregunta

Me estoy frustrando mucho porque parece que no entiendo por qué no funciona correctamente la selección de colecciones.

Digamos que estoy tratando de barajar la matriz randomizer .

int[] randomizer = new int[] {200,300,212,111,6,2332}; 
Collections.shuffle(Arrays.asList(randomizer));

Por alguna razón, los elementos permanecen ordenados exactamente igual, ya sea que yo llame al método aleatorio o no. ¿Algunas ideas?

¿Fue útil?

Solución

Arrays.asList no se puede utilizar con matrices de primitivas. Use esto en su lugar:

Integer[] randomizer = new Integer[] {200,300,212,111,6,2332}; 
Collections.shuffle(Arrays.asList(randomizer));

La misma regla se aplica a la mayoría de las clases en el marco de colecciones, ya que no puede usar tipos primitivos.

El código original (con int [] ) se compiló bien, pero no funcionó según lo previsto, debido al comportamiento del método variadic asList : solo hace un lista de un elemento, con la matriz int como su único miembro.

Otros consejos

La respuesta de Chris es correcta.

Como dije en un comentario sobre la respuesta de Chris, su matriz subyacente cambiará adecuadamente a menos que el arraylist necesite crecer, y la lista cree una nueva y copie los elementos en ella.

Es posible que desee mantener una referencia a la lista e iterar sobre eso después de la llamada Arrays.asList, y no iterar sobre la matriz después de eso, iterar sobre la Lista en su lugar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top