我有一个名为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);
}
}
}
我如何按每个玩家的点数对此ArrayList进行排序?
即。所以新的数组列表将是:
[[name5, 51], [name4, 23], [name2, 5], [name1, 2], [name3, 1]]
答案 0 :(得分:3)
您可以为文件中的每一行创建单独的对象,然后使用Comparable
或Comparator
界面对这些对象进行排序。然后使用Collections.sort(arrayList,sorter)
。
您可以在此处找到一个很好的教程来对用户定义的对象进行排序。
同样的课程可以是
public class Player{
private String name;
private Integer score;
//getters and setters here
}
然后为Player
个对象创建一个分类器,如下所示。
public class ScoreSort implements Comparator<Player>{
public int compareTo(Player first, Player second){
// implement sorting logic here
}
}
然后使用Collections.sort(playerList, new ScoreSort())
。您可以在以下链接中找到一个很好的教程
http://www.thejavageek.com/2013/06/17/sorting-user-defined-objects-part-2/
答案 1 :(得分:2)
创建一个包含2个成员变量名称和分数的类。为文件中的每个条目创建一个新的类实例,并将其存储在ArrayList
中。
现在这个类还应该实现Comparable
接口,该接口根据得分进行比较。现在使用Collections.sort