У меня есть следующий код в Java:быстрый способ сортировки списка в 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);
}
}
}
Я использую приведенный выше код для сортировки элементов в порядке, основанном на serverDataRate убывания. Здесь набор образцов довольно мал, предполагая, что у меня есть более широкий набор образцов из 100 элементов в списке, и код должен выполняться каждые 5-10 секунд. Является ли это самым быстрым способом сортировки списка или есть более быстрый метод, о котором я не знаю?
100 элементов не большой набор, если ваш шаг сравнения действительно тяжелый (не похоже на него). 100 элементов будут отсортированы быстро и быстро в любой слегка современной машине. – pcalcao
Вы хотите отсортировать 100 элементов каждые 5-10 секунд? Затем перестаньте беспокоиться о лучшем алгоритме, потому что вы не собираетесь улучшать Collections.sort на измеримую сумму. –
Не могли бы вы использовать TreeMap? Он почти работает как список, но сохраняет все элементы отсортированными в любое время. – Nican