放置比较器的最佳位置

时间:2011-07-19 08:34:32

标签: java comparator

我很抱歉,如果我问的问题已经得到解答,但我找不到参考资料。我的问题是放置比较器所属的最佳位置在哪里。例如,我需要一个用户对象列表,按用户出生日期排序,然后是姓氏,然后是名字。

5 个答案:

答案 0 :(得分:4)

如果比较器是对象固有的(例如,这是排序它的唯一方法),那么我只需在对象上实现Comparable

如果比较器是众多比较器中的一个(例如Comparator实例),并且仅在特定上下文中有意义,那么我将比较器类放在该层中。

答案 1 :(得分:3)

在你的情况下,如果将它放在域类中并在fetch期间在dao中对它进行排序意味着在dao one上有两个方法(或者更多基于Comaprision类型)来获取未排序对象的列表,例如getUsers()和一个排序列表的方法,例如getSortedUers();当然,你只能有一个已排序的方法,但如果不需要排序,总是调用排序。

答案 2 :(得分:0)

如果您使用的是数据库,那么最好的方法是使用order by

在查询中对其进行排序

答案 3 :(得分:0)

一般的答案是:把它放在最需要的地方: - )

这很大程度上取决于您的实际设计和架构。通常,您可以将它放在用户对象旁边,也可以放在最常用(或排他用)的层中。

答案 4 :(得分:0)

是的,如果你使用数据库或一些外部服务,它可以在那里排序,这是最好的方式。但是,如果需要在应用程序中对对象进行排序,则取决于您的体系结构。有两种变体。如果您只需要排序一次 - 创建匿名类,那么您将不会存储此对象的引用。如果需要多次排序,可以将其存储为类的静态字段或非静态字段。