【发布时间】:2012-12-24 15:43:47
【问题描述】:
我有类似的用户对象
class user
{
String firstName;
String lastName;
}
我有一个包含这些对象的List,我必须按名字对其进行排序,如果名字与姓氏匹配,则仅按姓氏排序。
【问题讨论】:
-
你可以实现一个Comparable接口。
标签: java collections
我有类似的用户对象
class user
{
String firstName;
String lastName;
}
我有一个包含这些对象的List,我必须按名字对其进行排序,如果名字与姓氏匹配,则仅按姓氏排序。
【问题讨论】:
标签: java collections
这里有几种方法。
您可以实现 Comparator,然后在标准 Java 集合库中使用它来对您的集合进行排序,例如Collections.sort()
Comparator<MyObject> comparator = ....
Collections.sort(listOfObjects, comparator); // note- will sort in place
另一种方法是让您的对象实现Comparable。然后,这会为您的对象引入 native 排序顺序。
请注意,您可以同时实现这两种方法。当您想要实现不同的排序策略(例如,按名称、按日期、按大小等)时,前者很有用。如果您想利用 Java 库中的本机排序概念和标准排序函数,则后者很有用。
查看Object Ordering 上的 Java 教程
【讨论】:
如果您实现 Comparable 并使用自己的 compareTo 方法来满足您的需求。
另一种选择是使用自定义Comparator,如许多其他答案所示。
可以在here 找到一篇很好的文章,展示了这两种方法。
【讨论】: