如何对Java ArrayList进行排序

时间:2013-07-07 16:57:06

标签: java sorting 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);

        }
    }

}

我如何按每个玩家的点数对此ArrayList进行排序?

即。所以新的数组列表将是:

[[name5, 51], [name4, 23], [name2, 5], [name1, 2], [name3, 1]]

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分:2)

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