使用Collections.sort方法来对自定义对象进行排序

文章目录

  • 一、基本使用方法
  • 二、利用compare来实现

一、基本使用方法

Collections.sort方法可以用来对自定义对象进行排序。要实现这一点,需要在调用该方法时传入一个比较器,该比较器用于指定如何比较对象中的值。

举个例子,假设有一个自定义对象Person,其中包含姓名和年龄两个属性,我们可以使用以下代码对该对象列表进行按年龄排序:

List<Person> people = Arrays.asList(new Person("John", 25), new Person("Jane", 32));
Collections.sort(people, (p1, p2) -> p1.getAge() - p2.getAge());

这样就可以按照person对象的age属性进行排序,也可以按照其他属性排序

请注意,如果需要按照降序排序,可以将比较器更改为:

Collections.sort(people, (p1, p2) -> p2.getAge() - p1.getAge());

这样就可以按照降序排序了

二、利用compare来实现

Collections.sort() 可以通过传入一个Comparator来排序,这个Comparator里面有一个compare方法。这个方法需要实现比较两个对象的逻辑,并返回一个整数值。

这个方法的签名如下:

int compare(T o1, T o2)

如果返回值是0,则认为这两个对象相等;如果返回值是大于0的整数,则认为第一个对象大于第二个对象;如果返回值是小于0的整数,则认为第一个对象小于第二个对象。

举个例子,假设有一个自定义对象Person,其中包含姓名和年龄两个属性,我们可以使用以下代码对该对象列表进行按年龄排序:

List<Person> people = Arrays.asList(new Person("John", 25), new Person("Jane", 32));
Collections.sort(people, new Comparator<Person>() {
    @Override
    public int compare(Person p1, Person p2) {
        return p1.getAge() - p2.getAge();
    }
});

或者使用lambda表达式

List<Person> people = Arrays.asList(new Person("John", 25), new Person("Jane", 32));
Collections.sort(people, (p1, p2) -> p1.getAge() - p2.getAge());

这样就可以按照person对象的age属性进行排序了。

请注意,如果需要按照降序排序,可以在compare方法中返回p2.getAge() – p1.getAge()。

提示:更多内容可以访问Clang’s Blog:https://www.clang.asia

版权声明:本文为博主作者:Clang的技术博客原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/u012899618/article/details/128777225

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2023年12月29日
下一篇 2023年12月29日

相关推荐