对于int数组,字符串阵列,它们很容易变得相对较小。您可以自己编写快速的算法,或者在Java中的sortface interface中直接调用arrays.sort.sort.sort.sort(),以实现数组的排序。我们想对对象的数组进行排序,我们该怎么办?作为一种面向对象的语言,Java自然不会留下如此缺失的泄漏。我们甚至可以将arrays.sort()方法调用对象数组以实现排序功能,这是So -so -called java自然排序。显然,当对象数组进行排序时,您应该指出有关该大小的基础。对象,例如学生对象的ID,等级可以用作排序的基础。为了允许JVM找到此基础,我们需要为学生实施分类的功能界面,以便我们可以区分可以分类和哪种类型的对象的类型。
该功能接口是可比接口。这是Java给出的接口。我们可以看到源代码(以Java8为例):
在此接口中只有一种方法可以实现,称为CompareTo方法。
此方法是我们使用arrays.sort()进行排序的基础。比较方法的功能是:
将当前对象(this)与指定的对象(本文参数o)进行比较。返回负整数,零或正整数,因为此对象小于或等于或等于或大于指定的对象。
由于已经提供了比较的逻辑,因此我们只需要指定对象的哪些属性进行排序。
例如,我们将指定学生类别的排序基础。
下一步是见证奇迹!一旦我们实现了可比的借口并重写类别类中的比较方法,就可以调用arrays.sort.sort()以对对象进行排序!
自然分类的基本用途几乎是相同的,但是我们可以更优雅。如果我们要分类对象的类尚未实现可比较的接口,我们可以重新修改类的源代码以添加排序函数吗?这太优雅了!
实际上,输入阵列。在想法中进行符号,并且有多种方法可供选择。这些方法构成重新加载的方法。其中一种方法有两个参数:
第二个参数是新功能接口的实现子类。此功能接口称为comploter。他的功能与可比性相似,并且还提供了在对象进行排序时进行排序的基础。他的使用方法是单独实现其子类对象,然后将其称为Sort方法中的参数时间,我们不需要在对象类中实现可比接口(注意!可比接口和比较器接口是两个接口!)!)
第二个参数是比较器接口的子类对象,该对象使用lambda表达式的格式。这里实现的抽象方法是比较方法中的比较方法。规则与可比的比较方法相同,我不会详细介绍。
原始:https://juejin.cn/post/7101598232563679263