在某些特殊情况下,我们需要在Java程序中对列表集合进行排序。例如,获取第三方接口中所有用户的列表,但是列表默认值是由从小到大的用户编号对根据用户的年龄,需要将系统从大到小。目前,我们需要去列表该集合是由自定义排序操作制成的。
列表排序有三种常见方法:以下:
让我们看一下各种分类方法的具体实现。
根据本文设计的场景,我们需要创建一个包含用户列表的列表集合,并根据从大到小的用户年龄进行排序。特定的实施代码如下:
如下图所示,上述代码的执行结果:此方法的核心代码如下:
可比性是内部的比较方法,比较器是与排序类别的比较器。使用比较器比较器,无需修改原始人员类。它只需要扩展一个人类的比较器即可。比较器的实现方法具有以下内容:
其中,第二种实施方法更简洁。我们可以通过以下特定代码观察两者之间的差异。
如下图所示,上述代码的执行结果:该方法的核心实现代码如下:
比较器可以使用更简洁的匿名方法来实现排序功能。特定的实施代码如下:
上述代码的执行结果,如下图所示:
在JDK 8之后,您可以使用一种更简单的方法来实现排序功能。它的实现仅需要一行代码。具体实现如下:
反向()表示反向顺序的含义,如果不使用此方法,则为正。
上述代码的执行结果,如下图所示:
与流进行分类时,如果零值出现在排序的字段中,则会导致异常。具体示例如下:
如下图所示,上述代码的执行结果:如果要求解上述问题,则需要将第二个参数传达给comparator.comparing:comparator.nullsxxx,如下代码所示:
comparator.nullsfirst表示排序字段中的空值放在集合的最前沿。如果要将空值放在集合的末尾,则可以使用comparator.nullslast。
上述代码的执行结果,如下图所示:
本文介绍了3种列表排序方法。前两种方法通常在JDK 8的先前版本中使用。在它们中,如果null值可能出现在排序字段中,请使用comparator.nullsxxx进行排序(否则将报告错误)。
死亡并没有震惊,也没有出于任何理由而生气。
Blogger:POST -80S Programmer.Hobbies:阅读,写作和慢跑。
公共帐户:Java面试实际问题分析