当前位置: 首页 > 知识库问答 >
问题:

两个属性的排序对象[重复]

贺英悟
2023-03-14

可能重复:
Java两个字段排序问题

我有用户对象,比如

class user
{
    String firstName;
    String lastName;
}

我有一个列表,其中包含这些对象,我必须按名字对其进行排序,如果名字匹配,则只按姓氏排序。

共有2个答案

经伟
2023-03-14

如果您实现Comparable并使用自己的compareTo方法来满足您的需求。

另一种选择是使用自定义比较器,如许多其他答案所示。

这里有一篇展示这两种方法的文章。

高钱青
2023-03-14

这里有几种方法。

您可以先实现一个比较器,然后在标准Java集合库中使用它对集合进行排序,例如集合。排序()

Comparator<MyObject> comparator = ....
Collections.sort(listOfObjects, comparator); // note-  will sort in place

另一种选择是让您的对象实现可比性。然后,这将为对象引入本机排序顺序。

请注意,您可以同时实现这两种方法。当您想实现不同的排序策略(例如按名称、日期、大小等)时,前者很有用。如果您想利用本机排序的概念和Java库中的标准排序函数,后者很有用。

查看关于对象排序的Java教程

 类似资料:
  • 我有一个Arraylist,我想按两个属性对ArrayList进行排序1。按名称(字母顺序)2。按自定义键 更多解释-: '

  • 问题内容: 我的应用程序包含大量对象,我将它们进行字符串化并将其保存到磁盘。不幸的是,当数组中的对象被操纵并且有时被替换时,对象上的属性以不同的顺序列出(它们的创建顺序?)。当我在数组上执行JSON.stringify()并将其保存时,一个diff显示以不同顺序列出的属性,当尝试使用diff和合并工具进一步合并数据时,这很烦人。 理想情况下,我想在执行字符串化之前或作为字符串化操作的一部分,按字母

  • 问题内容: 我需要通过对象属性之一的一个属性比较对象数组。 我在做 : 它没有编译,有人知道怎么做吗? 谢谢。 问题答案: 这是代码中导致错误的部分 您可以创建对特定类型的任意对象的(静态或非静态)方法的引用。对任何类型的对象的方法的引用如下所示: 但是方法引用不是对象,并且没有成员可以访问。使用此代码,您尝试访问引用的成员变量(并且不能) 另外,方法引用不是类,因此您不能从它们中获取另一个方法引

  • 问题内容: 如果我有一个JavaScript对象,例如: 有没有一种方法可以基于值对属性进行排序?这样我最终 问题答案: 将它们移动到一个数组,对该数组进行排序,然后将其用于您的目的。这是一个解决方案: 拥有数组后,您可以按自己喜欢的顺序从数组中重建对象,从而完全实现了您打算要做的事情。在我所知道的所有浏览器中都可以使用,但这取决于实现的怪癖,并且可能随时中断。您永远不应假设JavaScript对

  • 我读过关于使用比较器对数组列表进行排序的文章,但在所有示例中,人们都使用了,根据一些研究,这是一种用于字符串的方法。 我希望按照自定义对象的属性之一对其ArrayList进行排序:日期对象()。通常我会通过来比较它们,所以我想知道我是否可以写出如下内容: