Creo que en este caso, el almacenamiento viene mejor con una Hashtable, además el almacenamiento es más sencillo y más rápido, y puedes hacer un volcado de los datos a un vector.
Si quieres que los datos persistan en el tiempo, puedes hacer que la clase Jugador implemente Serializable y mediante un flujo de salida a fichero guardar los datos.
Por otra parte si vas a almacenar gran cantidad de información, podrias crear una conexion a una base de datos con JDBC para registrar los atributos en una tabla de jugadores.
Muchas gracias a todos, esta probablemente sea la ultima vez que os pida ayuda.
No porque, me hayais ayudado poco, todo lo contrario, pero casi he acabado el programa.
Primero, perdonar por tardar tanto es responder.
Volvi a inglaterra y tenia que acabar un par de trabajos y resulta que llego y no tengo internet en casa.
Y pasaba de entrar y pedir ayuda desde la uni, por si acaso.
Tengo que implementar un nuevo constructor para la clase de club que pase un comparador. Y con ello crear un main que imprima la informacion de cada jugador organizada por el promedio de bateo, permitiendo que el main dicte como organizar los jugadores, sin modificar el codigo de las clases.
Mi problema es compararlos y organizar los jugadores.
El promedio de bate ya tengo y queria usar el compareTo que me dijisteis que usara en para ordenar los jugadores por apellido. pero comparo dos promedios y no tengo muy claro como hacerlo, porque no puedo usar "this." y ahora mismo no tengo el codigo a mano.
habia pensado que podria cojer la informacion de los jugadores, pero no se como iterar por los jugadores y cojer un jugador y luego el siguiente con un for loop.
Estaba pensando que podia subir el programa cuando acabara, para que lo vierais. ya veremos.
si tienes el objeto Jugador,imagino que el promedio de bateo lo haras con:
promedio = objJugador.getPromedioBateo();
el promedio de bateo sera un real, se comparan con las funciones de reales: <=, >= ,< ,> ,=
entonces el compareTo de 2 jugadores sera
int compareTo(Jugador objJugador ){
promedio = objJugador1.getPromedioBateo();
si ( this.promedio > promedio ) devuelves mayor;
si ( this.promedio < promedio ) devuelves menor;
devuelves iguales;
}
Pero esto te modificaria la clase Jugador y no puedes no ?
Pues desde Club cojer 2 promedios y compararlos y ordenar sin compareTo, al metodo estructurado, o que ?
int comparar(Jugador objJugador1, Jugador objJugador2){
si ( objJugador1.getPromedioBateo()> objJugador2.getPromedioBateo()) devuelves mayor;
si ( objJugador1.getPromedioBateo()< objJugador2.getPromedioBateo()) devuelves menor;
devuelves iguales;
}
pero para esto tienes que tener todos los jugadores en Club, o modificar la clase Jugadores ( Si es que tienes Jugadores, en algun sitio los tendras a todos ) xD
añadiendole los metodos:
primerJugador();
siguienteJugador();
ó obtenerJugador(int)
Lo que quieres hacer es tan sencillo como crear una clase que implemente la interface Comparator y pasarla como parámetro al instanciar el TreeSet que usas para guardar los jugadores. Esta clase tiene el método compare(jugador j1, Jugador j2) donde comparas los promedios de bateo de ambos o cualquier otro criterio que quieras. Una vez hecho esto al obtener un Iterator de ese TreeSet te devolverá los jugadores ordenados por dicho criterio.
Así no tienes que modificar nada de lo ya existente, simplemente estás cambiando el criterio de ordenación interna del TreeSet al pasarle ese Comparator que has creado.