排序如何对Java ArrayList进行排序
我有个文件叫HighScores。包含玩家姓名和点数的txt:
name1 2
name2 5
name3 1
name4 23
name5 51
下面是我的代码,它读取这个文件的内容,拆分每一行并将其附加到ArrayList highScores
:
public class fileHandling {
static ArrayList highScores = new ArrayList();
public static void readFile(String[] args) throws Exception {
File file = new File(fileHandling.class.getClassLoader()
.getResource("HighScores.txt").getPath());
Scanner read = new Scanner(file);
while (read.hasNextLine()) {
String line = read.nextLine();
String[] result = line.split("\\s+");
highScores.add(Arrays.toString(result));
System.out.println(highScores);
}
}
}
然后,我如何根据每个玩家的点数对这个数组列表进行排序
也就是说,新的数组列表将是:
[[name5, 51], [name4, 23], [name2, 5], [name1, 2], [name3, 1]]
# 1 楼答案
您可以为文件中的每一行创建一个单独的对象,然后使用
Comparable
或Comparator
接口对这些对象进行排序。然后使用Collections.sort(arrayList,sorter)
。 您可以在这里找到一个很好的教程来对用户定义的对象进行排序同样的课程可以是
然后为
Player
对象创建一个分类器,如下所示然后使用
Collections.sort(playerList, new ScoreSort())
。你可以在下面的链接中找到一个很好的教程http://www.thejavageek.com/2013/06/17/sorting-user-defined-objects-part-2/
# 2 楼答案
创建一个包含两个成员变量名称和分数的类。为文件中的每个条目创建一个新的类实例,并将其存储在
ArrayList
。 现在这个类还应该实现Comparable
接口,该接口基于分数进行比较。现在使用Collections.sort