Ver Mensaje Individual
  #5 (permalink)  
Antiguo 10/07/2010, 11:27
Avatar de Gguer
Gguer
 
Fecha de Ingreso: abril-2009
Mensajes: 125
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Array de ArrayList

Hola

Creo que ya te he entendido. Quieres guardar en un arreglo los jugadores que puedan apostarle a cierto número pero como son infinitos quires una colección que no requiera un número máximo de posiciones; entonces sólo basta con declarar el ArrayList, sin hacer a un Array de tipo ArrayList, como te ha explicado muy bien guidojavier.

Si tienes números finitos en la ruleta del casino y a cada número le quieres asignar un tamaño infinito de jugadores que le han apostado a dicho número, se me ocurre que pudieras usar una colección Hashtable en la que los identifcadores o claves sean los números que conforman la ruleta y en cada posición agregues un ArrayList que contenga todos los jugadores que le apuestan a un número cualquiera.

Si la ruleta contiene los número de la serie del 1 al 10, y 2 jugadores le han apostado al número 7, podrías hacer esta declaración:

Código Java:
Ver original
  1. Hashtable <ArrayList> apuestas = new Hashtable<ArrayList>();
  2. int [] laRuleta = {1,2,3,4,5,6,7,8,9,10};
  3. Player apostador1 = new Player();
  4. Player apostador2 = new Player();
  5. ArrayList <Player> lista_apostadores = new ArrayList<Player>();
  6. apostador1.setApuesta(laRuleta[6]);
  7. apostador2.setApuesta(laRuleta[6]);
  8. lista_jugadores.add(apostador1);
  9. lista_jugadores.add(apostador2);
  10. apuestas.put(laRuleta[6], lista_apostadores);

No sé si es más complicado de lo que estás buscando, pero te lo explico:
El Hashtable funciona con una clave, la cual identificará al objeto que almacenes. En nuestro caso usaeremos el Hashtable para almacenar los números de la ruleta y los apostadores para cada número. Definimos dos apostadores, como en el ejemplo, que han decidido jugarle todo al número 7.

Para este caso he creado una lista de los números que contiene la ruleta y la he guardado en un arreglo de tipo int. Haciendo la suposición de que tienes un método en tu clase Player que le asigna el número que un jugador ha decidido apostar, se hace una llamada a tal método y pasamos como parámetro la posición en el array laRuleta que contiene al número apostado. La colección ArrayList contiene una lista de jugadores que le han apostado a ese número y ahí es donde guardas el objeto del apostador en turno, manteniendo la posibilidad de agregar a otro apostador posteriormente. El ejemplo anterior sólo muestra cómo crear dos apostadores para un solo número; en tu caso tendrías que instanciar un objeto ArrayList por cada número de la ruleta. Se me ocurre que lo podrías hacer mediante un ciclo y cada objeto guardarlo en un Array normal, para que después accedas a cada posición cuando lo requieras. Tendrás que hacer lo mismo para el objeto de tipo Player, pues cada objeto corresponde a un solo apostador.

Después de haber asignado todos los apostadores a cierto número y guardarlos en tu colección ArrayList, es momento para guardarlos en el Hashtable. La clave que le asignaremos a cada colección de apostadores será el número al que le han jugado.

Espero no haberte complicado más la existencia con este ejemplo. Creo que es una buena idea, aunque debe tener sus mejoras, y espero que te sirva para la solución a tu problema.

Saludos.

Última edición por Gguer; 10/07/2010 a las 11:39 Razón: Código