Hay dos formas de mezclar una matriz en Java.
- Método Collections.shuffle()
- Clase aleatoria
1. Mezclar elementos de una matriz mediante la clase Colecciones
Podemos crear una lista a partir de la matriz y luego usar el método shuffle() de la clase Collections para mezclar sus elementos. Luego, convertir la lista en la matriz original.
package com.journaldev.examples;import java.util.Arrays;import java.util.Collections;import java.util.List;public class ShuffleArray {public static void main(String[] args) {Integer[] intArray = { 1, 2, 3, 4, 5, 6, 7 };ListInteger intList = Arrays.asList(intArray);Collections.shuffle(intList);intList.toArray(intArray);System.out.println(Arrays.toString(intArray));}}
Salida: [1, 7, 5, 2, 3, 6, 4] Tenga en cuenta que Arrays.asList() funciona solo con una matriz de objetos. El concepto de autoboxing no funciona con objetos genéricos . Por lo tanto, no puede utilizar esta forma para mezclar una matriz para objetos primitivos.
2. Mezclar matrices usando la clase aleatoria
Podemos iterar a través de los elementos de la matriz en un bucle for . Luego, usamos la clase Random para generar un número de índice aleatorio. Luego, intercambiamos el elemento de índice actual con el elemento de índice generado aleatoriamente. Al final del bucle for, tendremos una matriz mezclada aleatoriamente.
package com.journaldev.examples;import java.util.Arrays;import java.util.Random;public class ShuffleArray {public static void main(String[] args) {int[] array = { 1, 2, 3, 4, 5, 6, 7 };Random rand = new Random();for (int i = 0; i array.length; i++) {int randomIndexToSwap = rand.nextInt(array.length);int temp = array[randomIndexToSwap];array[randomIndexToSwap] = array[i];array[i] = temp;}System.out.println(Arrays.toString(array));}}
Salida: [2, 4, 5, 1, 7, 3, 6]