tengo el siguiente código en Java:manera más rápida para ordenar una lista en Java
public class ServerInfo {
int serverId;
int serverDataRate;
public ServerInfo(int serverId, int serverDataRate) {
this.serverId = serverId;
this.serverDataRate = serverDataRate;
}
public int getServerId() {
return serverId;
}
public double getServerDataRate() {
return serverDataRate;
}
public String toString(){
return serverId + ":" + serverDataRate;
}
}
public class ServerInfoComparator implements Comparator<ServerInfo> {
@Override
public int compare(ServerInfo o1, ServerInfo o2) {
double datarate1=o1.getServerDataRate();
double datarate2=o2.getServerDataRate();
if(datarate1>datarate2)
return -1;
else if(datarate1<datarate2)
return +1;
else
return 0;
}
}
public class Sample {
List<ServerInfo> listOfServers= new ArrayList<ServerInfo>();
public void insertIntoList(){
listOfServers.add(new ServerInfo(0,256));
listOfServers.add(new ServerInfo(1,270));
listOfServers.add(new ServerInfo(2,256));
listOfServers.add(new ServerInfo(3,290));
listOfServers.add(new ServerInfo(4,300));
listOfServers.add(new ServerInfo(5,300));
listOfServers.add(new ServerInfo(6,256));
listOfServers.add(new ServerInfo(7,265));
listOfServers.add(new ServerInfo(8,289));
listOfServers.add(new ServerInfo(9,310));
}
public static void main(String[] args){
Sample s = new Sample();
s.insertIntoList();
ServerInfoComparator com = new ServerInfoComparator();
Collections.sort(s.listOfServers,com);
for(ServerInfo server: s.listOfServers){
System.out.println(server);
}
}
}
Estoy utilizando el código anterior para ordenar los elementos en orden basado en la serverDataRate descendente. Aquí el conjunto de muestras es bastante pequeño, suponiendo que tengo un conjunto de muestra más grande de 100 elementos en la lista y el código tuvo que ejecutarse cada 5-10 segundos. ¿Es esta la forma más rápida de ordenar la lista o hay un método más rápido del que no soy consciente?
100 elementos no es un conjunto grande a menos que su paso de comparación sea muy pesado (no lo parece). 100 elementos se clasificarán _extremely_ rápido en cualquier máquina ligeramente moderna. – pcalcao
¿Quieres ordenar 100 elementos cada 5-10 segundos? Entonces deja de preocuparte por el mejor algoritmo, porque no mejorarás en Collections.sort en una cantidad medible. –
¿Podría usar un TreeMap? Casi funciona como una lista, pero mantiene todos los elementos ordenados en todo momento. – Nican