una por ordenar objetos numeros nombres listas lista enlazada comparar como atributo alfabeticamente java list class arraylist sorted

por - ordenar una lista de objetos en java



Ordene una lista que contiene una clase personalizada (2)

Puede utilizar la public static <T> void sort(List<T> list, Comparator<? super T> c) sobrecarga del public static <T> void sort(List<T> list, Comparator<? super T> c) en Collections - proporcione el comparador que necesita (puede ser solo una clase anónima) - ¡y ya está todo listo!

EDITAR : Esto describe cómo funciona el método. En resumen, implementará su llamada como

Collections.sort(list, new Comparator<Player>() { int compare(Player left, Player right) { return left.getPoints() - right.getPoints(); // The order depends on the direction of sorting. } });

¡Eso es!

así que actualmente estoy haciendo un ejercicio para la universidad que tiene varias partes opcionales (porque todavía no hemos hecho esto en clase), una de ellas es usar listas en lugar de matrices (por lo que sería de tamaño variable) y otra imprimiendo la lista ordenada por puntos (voy a llegar a eso ahora)

Entonces, 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; }

}

Muy simple, entonces estoy creando una lista con esto (en otra clase):

List<Player> lplayer = new ArrayList<Player>();

Agregar 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."); } }

Entonces 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 pueden ver, soy bastante nuevo en Java, así que intenten 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!


Collections.sort(list) definitivamente podría ser una solución para su problema. Es una forma de ordenar tus colecciones proporcionadas por Java. Si estás escribiendo una aplicación del "mundo real" (no un ejercicio para collage) esta sería la forma en que lo haces.

Para que Collections.sort(list) funcione, debe implementar una llamada de interfaz Comparaple . Al implementar esta interfaz, el género sabrá cómo ordenar sus elementos.

Pero debido a que es un ejercicio de collage, esto es quizás un poco fácil. Si desea (o debe) implementar su propio algoritmo de clasificación, intente primero ordenar una lista común de números (1, 5, 2, 7 ...). Puede extender dicho algoritmo de clasificación fácilmente para sus propias clases.