Tôi có đoạn code sau trong Java:Cách nhanh nhất để sắp xếp một danh sách trong 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);
}
}
}
Tôi đang sử dụng đoạn mã trên để sắp xếp các yếu tố theo thứ tự dựa trên serverDataRate giảm dần. Ở đây, bộ mẫu khá nhỏ giả sử tôi có một bộ mẫu lớn hơn gồm 100 phần tử trong danh sách và mã phải được thực thi sau mỗi 5-10 giây. Đây có phải là cách nhanh nhất để sắp xếp danh sách hoặc có phương pháp nhanh hơn mà tôi không biết?
100 phần tử không phải là tập hợp lớn trừ khi bước so sánh của bạn thực sự nặng (dường như không). 100 yếu tố sẽ được sắp xếp _extremely_ nhanh chóng trong bất kỳ máy hơi hiện đại nào. – pcalcao
Bạn muốn sắp xếp 100 phần tử cứ sau 5-10 giây? Sau đó, ngừng lo lắng về thuật toán tốt nhất, bởi vì bạn sẽ không cải thiện trên Collections.sort bởi một số tiền đo lường được. –
Bạn có thể sử dụng TreeMap không? Nó gần như hoạt động như một danh sách, nhưng giữ tất cả các yếu tố được sắp xếp mọi lúc. – Nican