有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

排序如何对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]]

共 (2) 个答案

  1. # 1 楼答案

    您可以为文件中的每一行创建一个单独的对象,然后使用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/

  2. # 2 楼答案

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