2015-11-04 238 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()方法的合同 - 它是否保证总是返回一个新的结果列表(即只有调用者会引用的对象)?如果是这样,那么你可以安全地对其进行分类。如果不是,你应该复印一份。

另一个问题是 - 它会一直保证吗?其中一种可能会出错的方法是添加一些缓存 - 这可能很容易破坏这种保证。