2009-06-09 10 views
18

¿Existe algún tipo de colección de Java que indique que el orden de obtención es aleatorio? Por ejemplo, pongo el número entero 1, 2, 3 en la colección y cuando intento imprimirlos, todos los resultados pueden ser "1 2 3", "3 2 1" o "1 3 2".Colección aleatoria de Java

Respuesta

43

Si lo que desea es una secuencia aleatoria se puede utilizar Collections.shuffle

List<Integer> list = new LinkedList(); 
    //Add elements to list 
    Collections.shuffle(list); 
+5

Este es un caso en el que es posible que desee usar 'ArrayList': a partir de la descripción del algoritmo que desea un acceso aleatorio rápido. –

5

Coge una colección normal y baraja, luego repite sobre ella de forma normal.

Puede usar java.util.Collections.shuffle(List<T>) para barajar.

+1

Bueno, su primera respuesta me confundió porque no estoy al tanto de java.util.Collections. Soy un hombre nuevo, ¿sabes? – Sefler

2

Sólo shuffle la colección.

Si la colección debe estar en orden, puede acceder a los elementos en índices aleatorios, pero luego debe hacer un seguimiento de los que ha usado anteriormente (tal vez, depende de su aplicación), y esto puede ser muy ineficiente. Una mejor solución, si la memoria no es un obstáculo, sería simplemente hacer una copia y mezclar eso.

1

No es que yo sepa. Siempre puedes poner los valores en una lista y usar Collections.shuffle para poner los valores en un orden aleatorio.