2013-06-02 138 views
0

我編寫了一個類似的代碼,它可以從文件夾中的文本文件(150個文本文件)創建150個員工對象,並將其存儲在集合中。java:對集合中的對象進行排序

這些文本文件包含employess的id,名稱和年齡。

我的問題是我想排序id,名稱和這些150僱員的年齡..如何我應該寫它..應該實現比較器或可比的界面?並執行它。 請指引我

的代碼如下:

package com.fulcrum.emp; 

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.ArrayList; 
import java.util.Collections; 
import java.util.Comparator; 
import java.util.List; 
import java.util.Scanner; 

public class TestingColections { 

    public static void main(String[] args) { 

     File folder = new File("D:\\employee files"); 
     File[] listOfFiles = folder.listFiles(); 
     ArrayList<Employee> emp= new ArrayList<Employee>();; 
     int id = 0; 
     String name = null; 
     int age = 0; 
     for (File file : listOfFiles) { 

      try { 
       Scanner scanner = new Scanner(file); 

       String tokens = ""; 
       String[] newtokens = null; 

       while (scanner.hasNext()) { 

        tokens = tokens.concat(scanner.nextLine()).concat(" "); 

        tokens = tokens.replace("=", "|"); 
        newtokens = tokens.split("[|\\s]"); 

       } 

       id = Integer.parseInt(newtokens[1]); 
       name = (newtokens[3] + " " + newtokens[4]); 
       age = Integer.parseInt(newtokens[6]); 



       emp.add(new Employee(id, name, age)); 




      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
      } 


     } 

     for(int i=0;i<emp.size();i++) 
     { 
      System.out.println(emp.get(i)); 
     } 

    } 

} 
+0

你想在哪裏存儲 – mrz

回答

0

的一種方式做,這是使用哪個...

對指定列表按升序進行,根據Collections.sort()方法元素的自然排序。列表中的所有元素都必須實現Comparable接口。

Comparable接口定義僅一個...

返回負整數,零,或作爲該對象的正整數方法比指定對象小於,等於或大於。

所以,如果你的Employee對象是由ID進行排序,那麼下面會看到您:

public class Employee implements Comparable<Employee> { 

    // Existing code 


    public int compareTo(Employee e) { 
     return this.id - e.getId(); 
    } 
} 

如果您希望通過員工的名字來訂購,則該方法可能是這:

@Override 
public int compareTo(Employee arg0) { 
    return this.name.compareTo(arg0.getName()); 
} 

要對收集進行排序,請在循環和打印值之前使用Collections.sort(emp);

相關問題