2015-11-04 97 views
1

我寫了一個函數,它對自定義對象Collection.sort的ArrayList進行排序。java中mutator方法的最佳實踐

public List<Student> getStudents(int std) { 
    List<Student> students = studentDAO.getStudents(std); 
    ...... 
    sortStudents(students); 
    ..... 
    return students; 
} 

private void sortStudents(students) { 
    Collection.sort(students, new Comparator<Student>(){ 
     public int compare(Student s1, Student s2) { 
      return s1.getDOB().compareTo(s2.getDOB()); 
     } 
    }); 
} 

上面的代碼是乾淨的嗎? 寫這樣的增變器還是應該使用一個新的對象並返回它可以嗎?

+1

這是[代碼評論](http://codereview.stackexchange.com/)。但是您可以將'Comparator'作爲常量和內聯排序方法存儲到'getStudents(int)'中。 – Flown

+1

謝謝你的喜歡。我不知道Code Review。謝謝 –

回答

0

這取決於studentDAO.getStudents()方法的合同 - 它是否保證總是返回一個新的結果列表(即只有調用者會引用的對象)?如果是這樣,那麼你可以安全地對其進行分類。如果不是,你應該複印一份。

另一個問題是 - 它會一直保證嗎?其中一種可能會出錯的方法是添加一些緩存 - 這可能很容易破壞這種保證。