2013-07-07 43 views
-5

Ive得到了一個名爲HighScores.txt文件,其中包含球員的名字和點數:如何排序的Java的ArrayList

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

你以前做過什麼研究嗎? – gaborsch

回答

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/

2

找到一個很好的教程創建具有2的成員變量的名字和比分的一類。爲文件中的每個條目創建一個新的類實例,並將其存儲在ArrayList中。 現在這個類還應該實現Comparable接口,根據分數進行比較。現在用Collections.sort