【问题标题】:How to sort Java ArrayList [duplicate]如何对Java ArrayList进行排序[重复]
【发布时间】:2013-07-05 01:12:36
【问题描述】:

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

【问题讨论】:

  • 你之前做过研究吗?

标签: java sorting arraylist


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-28
      • 2017-02-09
      • 2019-10-05
      • 1970-01-01
      • 1970-01-01
      • 2016-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多