如果我有 arraylist 我可以使用 Collection.sort() 这是非常有效和快速的。但是现在我必须使用 BigList 来保存我的对象类型的许多元素,并且我必须按值对它们进行排序,从名为 JasPlayer 的对象杀死为 int,昵称为 String。
我尝试使用 Collection.sort() 最好的方法来做到这一点,但我不能像普通列表那样使用它。
private BigList<JasPlayer> playerRankingPlaces;
public BigList<JasPlayer> getRanking() {
return this.playerRankingPlaces;
}
public void addRankingElement(JasPlayer element) {
this.playerRankingPlaces.add(element);
}
public void setRanking(BigList<JasPlayer> playerRanking) {
this.playerRankingPlaces = playerRanking;
}
public void sortRankingList() {
for(JasPlayer player : JasPlayerUtils.getPlayers()) {
addRankingElement(player);
long startTime = System.nanoTime();
//THERE's Problem, i can't use biglist like normal list :\
Collections.sort(playerRankingPlaces, Comparator.comparing(Ranking :: getKills).thenComparing(Ranking :: getName));
long endTime = System.nanoTime() - startTime;
MessageUtils.sendDebug("Sorting " + playerRankingPlaces.size() + "took " + endTime / 1e9 + " seconds");
}
}
private static int getKills(UUID uuid) {
if(JasPlayerUtils.findByUUID(uuid).isPresent()) {
return JasPlayerUtils.findByUUID(uuid).get().getKills();
}
return 0;
}
private static String getName(UUID uuid) {
if(JasPlayerUtils.findByUUID(uuid).isPresent()) {
return JasPlayerUtils.findByUUID(uuid).get().getPlayer().getName();
}
return "Brak";
}