style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

¿Cómo mantener un arraylist ordenado ?

Saludos a todos, soy nuevo en el sitio y estoy trabajando en una aplicación web de ajedrez para jugar humano-humano y quiero crear un ArrayList, con jugadores de ajedrez que se mantenga ordenado en la medida que inserto
, o cuando la partida termine que se ordene automaticamente por su Elo.

hasta ahora tengo esto.

public class Jugador implements Comparable
private String nombre =null;
private String pais = null;
private Integer elo=2000;
....
public void setElo(Integer elo) {
this.elo = elo;
}
public void setElo(String elo) {
this.elo = new Integer(elo);
}

public Integer getElo() {
return elo;
}

public int compareTo(Object o) {
Jugador jug = (Jugador)o;
return jug.getElo().compareTo(this.getElo());
}

para eso tengo otra clase

public class ListaUsuariosConectados {
public ArrayList lista = new ArrayList();
...

}

jugadoresEnLineas = new ListaUsuariosConectados();

esto es lo que hago actualmente, cada vez que me hacen una petición para ver los usuarios conectados y devolverlo ordenado por Elo.

Collections.sort(jugadoresEnLineas.lista);

pero me parece poco eficiente, teniendo en cuenta que al sitio se van a conectar muchos jugadores y se quiere dar los jugadores conectados ordenado por elo, y al finalizar cada partida cada jugador modifico su elo, además estas peticiones se hacen cada 10 segundo al servidor

la pregunta es

¿ Hay otra manera de mantener esa lista actualizada ?

La idea me viene de TurboPascal que tiene una clase llamada TsortedCollection que tiene esta funcionalidad. La lista siempre esta ordenada.

gracias

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

SortedSet

Podrías usar un SortedSet en vez de List, y así además no puede haber dos elementos iguales. Si usas HashSet debes implementar hash() en los objetos que metas al conjunto y si usas TreeSet me parece que con que implementen Comparable es suficiente (o creas el conjunto pasándole un Comparator).

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">