所以我现在想为一个学校项目做的是使用外部文件制作一个小高分系统,并使用TreeMap将人员姓名映射到他们的分数。然而,根据我通过它迭代的方式的性质,数字是分散的,我想使它们以降序排列,但我不知道如何。任何帮助,将不胜感激!谢谢!如何使用递减键排序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));
}
“TreeMap”保持条目按键排序。这里的关键是人的名字(“put”的第一个参数),而不是分数。所以你的树会按名称排序。这看起来不像你想要的。 – ajb
http://stackoverflow.com/questions/18923167/sorting-descending-order-java-map – praveen
[在TreeMap中对键进行自定义数据结构排序]的可能重复(http://stackoverflow.com/questions/7385189/sorting -archust-data-structure-on-key-in-treemap) –