2015-04-26 53 views
1

所以這裏是我很困惑。 在我的主要方法中,我有許多Faculty對象。 除了擁有FacultyList Arraylist。使用插入比較ArrayList中的對象排序

ArrayList<Faculty> FacultyList = new ArrayList<>(); 

Faculty faculty1 = new Faculty(fName, "Bob", age, department, position); 
Faculty faculty2 = new Faculty(fName, "Anderson", age, department, position); 
Faculty faculty3 = new Faculty(fName, "Yvetal", age, department, position); 
Faculty faculty4 = new Faculty(fName, "Thompson", age, department, position); 

FacultyList.add(faculty1); 
FacultyList.add(faculty2); 
FacultyList.add(faculty3); 
FacultyList.add(faculty4); 

現在的情況是,我需要或者創建一個方法或只是把代碼中的主要程序做基礎上,姓氏的插入排序。

我曾經這樣做過,它沒有改變任何東西。

private static void insertionFaculty(ArrayList<Faculty> array) 
    { 
     Faculty temp; 
     for(int i = 1; i < array.size(); i++) 
     { 
      temp = array.get(i); 
      for(int j = i; j > 0; j--) 
      { 
       if(temp.getLastName().compareTo(array.get(j-1).getLastName()) < 0) 
       { 
        array.set(j, array.get(j - 1)); 
       } 
       else 
        break; 
      array.set(j, temp); 
      } 
     } 
    } 

請幫助:)

+0

檢查[this](http://beginnersbook.com/2013/12/java -arraylist-的對象排序-例如可比 - 和 - 比較器/)。你需要在'Faculty'類中實現'comparator'和'comparator',然後你可以在'ArrayList'上使用'Collections.sort()'。 – JonasCz

+0

我也看到了這一點,但我需要做一個插入排序方法或只是一個代碼塊,而不是繼承代碼 – Maximus

+0

[This](http://stackoverflow.com/a/8938297/4428462)可能會幫助,如果你想手動完成。應該對ArrayList進行一些更改。 – JonasCz

回答

0

實現你的教師類可比和通過執行以下操作重寫compareTo方法,

public class Faculty implements Comparable 
{ 
    String lastName = ................. 

    ..................... 


    public int compareTo(Object o) 
    { 
    Faculty faculty = (Faculty)o; 
    String olastName = faculty.getLastName(); 

    return lastName.compareTo(olastName); 
    } 
} 

那麼所有你需要做的就是調用Arrays.sort上你的FacultyList,應該按姓氏排序,

Arrays.sort(FacultyList); 
相關問題