如何对List集合中的对象进行按某个属性排序

it2022-05-05  151

如何对List集合中的对象进行按某个属性排序

问题描述普通的字符串集合的排序对象集合的排序如下所示实现对集合中的对象进行排序的方式1实现对集合中的对象进行排序的方式2

问题描述

在实际的工作开发中,我们经常会遇到需要对list集合中的某个对象的某个属性进行排序的操作,如果手工判断,步骤较为麻烦,所以在此处小编将会介绍集合中排序的方法。

普通的字符串集合的排序

排序方式以及排序的结果如下图所示:

排序的结果符合我们的预期,但是真正在实际的开发中,排序的方式并不是如此的简单,大多数需要排序一个集合中的对象的某个属性的值的值。

对象集合的排序如下所示

我们发现在编译时就已经不通过,编译不通过的原因如下图所示: 错误的意思是这个User类得继承Comparable,那为什么String可以直接比较呢,看一下String的源码发现: 我们发现String的源码中,已经实现了Comparable的接口,所以在排序的时候是可以使用的。参照String类中的方式,我们也可以对我们的代码进行一次改造。其中改造的方式有两种。

实现对集合中的对象进行排序的方式1

我们也可以让我们的对象来实现Comparable的接口,重写接口中的方法。如下图所示: 实体类中实现了Comparable的接口以后,我们在看看我们测试方法中的排序方法是否还会报错。如下图所示: 我们发现,现在的排序的方法是没有编译报错的,执行完排序的结果如下所示: 我是对User对象中的id字段进行排序的,可以看出,排序结果符合预期结果。 我们会发现sort(List)方法中List中的T必须实现Comparable接口,然后实现 compareTo()方法,该方法的返回值0代表相等,1表示大于,-1表示小于

实现对集合中的对象进行排序的方式2

这种方式是不用User的实体类来实现Comparable的接口,实现方法如下图所示: 排序后的结果如下所示: 同样符合我们的预期结果。 从上面的例子我们可以看出User类没有实现Comparable接口,只是在sort()方法 中多传入一个参数,只不过该参数是一个接口我们需要实现其compare方法。

以上就是小编对集合中按照对象的某一个字段进行排序的心得体会,如果解决了您的问题,请给小编一个赞来表示鼓励,如果有什么问题,可以在留言区进行留言,小编看到后会尽快回复。


最新回复(0)