-5

我有一个名为 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]]
4

2 回答 2

3

您可以为文件中的每一行创建一个单独的对象,然后使用ComparableComparator接口对这些对象进行排序。然后使用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/

于 2013-07-07T16:59:55.057 回答
2

创建一个具有 2 个成员变量名称和分数的类。为文件中的每个条目创建一个新的类实例并将其存储在ArrayList. 现在这个类还应该实现Comparable基于分数进行比较的接口。现在使用Collections.sort

于 2013-07-07T17:00:25.587 回答