java 文本排序_如何使用Java按最高编号对文本文件进行排序
使用像TreeMap這樣的有序集合,它按照鍵的自然順序保存其條目(鍵值映射)。因為,您希望對高分進行排序,將分數作為鍵和玩家名稱作為其值。
// instantiate your sorted collection
Map highestScores = new TreeMap();
// setup a file reader
BufferedReader reader = new BufferedReader(
new FileReader(new File("/path/to/file")));
String line = null;
while ((line = reader.readLine()) != null) { // read your file line by line
String[] playerScores = line.split(": ");
// populate your collection with score-player mappings
highestScores.put(Integer.valueOf(playerScores[1]), playerScores[0]);
}
// iterate in descending order
for (Integer score : highestScores.descendingKeySet()) {
System.out.println(highestScores.get(score) + ": " + score);
}
的輸出強>的
Eric: 25
Oscar: 18
Bert: 16
John: 12
Carl: 9
修改強>
兩個或更多玩家很可能擁有相同的高分。因此,排序后的集合必須更加復雜,但如果您已經理解了上面的那個,那么理解這個集合就不會有麻煩了。
現在我們不得不將得分映射到玩家,我們必須將其映射到List個玩家(具有相同的高分):
// {key - value} = {high score - {list, of, players}}
TreeMap> highestScores =
new TreeMap>();
BufferedReader reader = new BufferedReader(
new FileReader(new File("/path/to/file")));
String line = null;
while ((line = reader.readLine()) != null) {
String[] playerScores = line.split(": ");
Integer score = Integer.valueOf(playerScores[1]);
List playerList = null;
// check if a player with this score already exists
if ((playerList = highestScores.get(score)) == null) { // if NOT,
playerList = new ArrayList(1); // CREATE a new list
playerList.add(playerScores[0]);
highestScores.put(Integer.valueOf(playerScores[1]), playerList);
} else { // if YES, ADD to the existing list
playerList.add(playerScores[0]);
}
}
// iterate in descending order
for (Integer score : highestScores.descendingKeySet()) {
for (String player : highestScores.get(score)) { // iterate over player list
System.out.println(player + ": " + score);
}
}
的輸出強>的
Eric: 25
Oscar: 18
Bert: 16
John: 12 *
Jane: 12 *
Carl: 9
總結
以上是生活随笔為你收集整理的java 文本排序_如何使用Java按最高编号对文本文件进行排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mybatis 2 -常用数据操作
- 下一篇: 苹果6s强制删除id锁_#Vlog# 苹