因此,我现在要为学校项目做的事情是使用外部文件制作一个小型高分系统,并使用TreeMap将人员姓名映射到他们的分数。但是,仅基于我遍历它的方式的本质,这些数字是零散的,我想使它们按降序排列,但是我不确定如何。任何帮助,将不胜感激!谢谢!
File dir = new File(System.getProperty("user.dir") + "/saves");
try {
TreeMap<String, Character> scores2 = new TreeMap<>();
for (File file : dir.listFiles()) {
InputStream in = new FileInputStream(file);
String name = file.getName().replace(".dat", "");
int content;
while((content = in.read())!=-1) {
char num = (char)content;
scores2.put(name, num);
}
}
Text top5 = new Text();
for (int i = 0; i < dir.list().length; i++) {
Map.Entry<String, Character> currentEntry = scores2.pollFirstEntry();
String name = currentEntry.getKey();
Character score = currentEntry.getValue();
top5.setText(top5.getText() + name + ": " + score + "\n");
}
newPane.setAlignment(Pos.CENTER);
newPane.add(top5, 1, 1);
Button exit = new Button("Arrière");
exit.setOnMouseClicked(mEv -> scene.setRoot(pane));
newPane.add(exit, 1, 3);
scene.setRoot(newPane);
}catch(NullPointerException | IOException e) {
e.printStackTrace();
Text txt = new Text("Il n'y a pas de scores pour montrer.");
Button returnButto = new Button("Retourner?");
GridPane errPane = new GridPane();
errPane.add(txt, 1, 1);
errPane.add(returnButto, 1, 2);
errPane.setAlignment(Pos.CENTER);
scene.setRoot(errPane);
returnButto.setOnMouseClicked(mcEv -> scene.setRoot(pane));
}
最佳答案
如java docs所述,TreeMap:
根据其键的自然顺序或在映射创建时提供的Comparator进行排序,具体取决于所使用的构造函数。
因此,您将需要创建自己的Comparator,以降序对元素进行排序,然后将其传递给相应的TreeMap构造函数。
关于java - 如何用降序键对TreeMap排序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36855778/