, así que actualmente estoy haciendo un ejercicio para la universidad que tiene varias partes opcionales (porque todavía no lo hemos hecho en clase), una de ellas es usar listas en lugar de matrices (por lo que sería de tamaño variable) y otro imprimiendo la lista ordenada por puntos (voy a llegar a eso ahora)Ordene una lista que contenga una clase personalizada
Así que tengo la clase Player.java que se ve así.
public class Player {
String name;
String password;
int chips;
int points;
public Player (String n, String pw, int c, int p) {
name = n;
password = pw;
chips = c;
points = p;
}
public String getName() {
return name;
}
public void setName (String n) {
name = n;
}
public void setPW (String pw) {
password = pw;
}
public String getPW() {
return password;
}
public void setChips (int c) {
chips = c;
}
public int getChips() {
return chips;
}
public void setPoints (int p) {
points = p;
}
public int getPoints() {
return points;
}
}
Bastante simple, entonces yo estoy creando una lista con esto (en otra clase):
List<Player> lplayer = new ArrayList<Player>();
Adición de jugadores con esto:
lplayer.add(new Player(n,pw,c,p))`
Y finalmente leyendo sus estadísticas con esto:
public int search_Player (String n) {
String name;
int i = 0;
boolean found = false;
while ((i <= tp) && (!found)) {
name = lplayer.get(i).getName();
if (name.equals(n)) {
found = true;
}
i++;
}
return (found == true) ? i-1 : -1;
}
public Player show_Player (int i) {
return lplayer.get(i);
}
public void list_Players() {
Collections.sort(lplayer);
int i2;
if (tp > 0) { // variable which contains number of total players
for (int i = 0;i<tp;i++) {
i2 = i+1;
System.out.println ("\n"+i2+". "+lplayer.get(i).getName()+" [CHIPS: "+lplayer.get(i).getChips()+" - POINTS: "+lplayer.get(i).getPoints()+"]");
}
}
else {
System.out.println ("There are no players yet.");
}
}
Así que eso es básicamente todo el código. Como puede ver, ya tengo una función list_Players pero solo la imprime en el orden en que se agregó. Necesito una forma de imprimir ordenada por los puntos que tiene cada jugador (básicamente, una clasificación).
Como puede ver, soy bastante nuevo en Java, así que intente no encontrar una forma muy complicada de hacerlo.
Ya lo busqué y encontré cosas como Collections.sort (list) pero supongo que no es lo que necesito aquí.
¡Gracias!
Definitivamente necesitas 'Collections.sort'. Si solo necesita ordenar por puntaje y no por otros criterios, escriba 'public class Player implementa Comparable' e implemente el método requerido. –
Si necesita comentar cosas simples como 'variable que contiene el número total de jugadores', realmente necesita usar mejores nombres de variable. –
También es muy difícil razonar sobre qué hace un método como 'int search_Player (String n)'. ¿Qué pasa con 'Player getPlayerByName (String name)' (a menos que la tarea especifique explícitamente la firma del método anterior)? –