,,java中的arrays.sort()代码详解

,,java中的arrays.sort()代码详解

这篇文章主要介绍了Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)中的Arrays.sort()代码详解,涉及Arrays.sort()简单示例,策略模式,"超级"的使用等相关内容,具有一定借鉴价值,需要的朋友可以参考下。

Arrays.sort(T[],比较器?超级温度系数)方法用于对象数组按用户自定义规则排序。

官方Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)文档只是简要描述此方法的作用,并未进行详细的介绍,本文将深入解析此方法。

1. 简单示例

分类方法的使用非常的简单明了,下面的例子中,先定义一个比较狗大小的比较器,然后将其实例对象作为参数传给分类方法,通过此示例,你应该能够快速掌握Arrays.sort()的使用方法。

导入Java。util。数组;

导入Java。util。比较器;

班级狗{

(同Internationalorganizations)国际组织大小;

公狗(国际){

size=s;

}

}

dogsize比较仪类实现比较狗{

@覆盖

公共(同Internationalorganizations)国际组织比较(狗o1,狗o2) {

返回O1。尺寸-氧气。尺寸;

}

}

公共类数组排序{

公共静态void main(String[] args) {

狗d1=新狗(2);

狗d2=新狗(1);

狗d3=新狗(3);

Dog[] dogArray={d1,d2,D3 };

打印狗(狗阵列);

Arrays.sort(dogArray,new dogsize comparator());

打印狗(狗阵列);

}

public static void print dogs(Dog[]dogs){

对于(狗d:狗)

系统。出去。打印(d . size ' ');

系统。出去。println();

}

}

输出为:

2 1 3

1 2 3

2.使用策略模式

这是策略模式(战略模式)的一个完美又简洁的示例,值得一提的是为什么这种场景下适合使用策略模式。

总体来说,策略模式允许在程序执行时选择不同的算法。比如在排序时,传入不同的比较器(比较器),就采用不同的算法。

根据上面的例子,假设你想要根据狗的重量来进行排序,可以像下面这样,创建一个新的比较器来进行排序:

班级狗{

(同Internationalorganizations)国际组织大小;

(同Internationalorganizations)国际组织重量;

公共狗(int s,int w){

size=s;

重量=w;

}

}

dogsize比较仪类实现比较狗{

@覆盖

公共(同Internationalorganizations)国际组织比较(狗o1,狗o2) {

返回O1。尺寸-氧气。尺寸;

}

}

dog weight比较仪类实现比较狗{

@覆盖

公共(同Internationalorganizations)国际组织比较(狗o1,狗o2) {

返回O1。重量-氧气。重量;

}

}

公共类数组排序{

公共静态void main(String[] args) {

狗d1=新狗(2,50);

狗d2=新狗(1,30);

狗d3=新狗(3,40);

Dog[] dogArray={d1,d2,D3 };

打印狗(狗阵列);

Arrays.sort(dogArray,new dogsize comparator());

打印狗(狗阵列);

Arrays.sort(dogArray,new dogwight comparator());

打印狗(狗阵列);

}

public static void print dogs(Dog[]dogs){

对于(狗d:狗)

系统。出去。print(' size=' d . size ' weight=' d . weight ' ');

系统。出去。println();

}

}

执行结果:

尺码=2重量=50尺码=1重量=30尺码=3重量=40

尺码=1重量=30尺码=2重量=50尺码=3重量=40

尺码=1重量=30尺码=3重量=40尺码=2重量=50

比较仪是一个接口,所以分类方法中可以传入任意实现了此接口的类的实例,这就是策略模式的主要思想。

3.为何使用”super”

如果使用"比较者c "那是很简单易懂的,但是分类的第2个参数里面的?superT意味着比较器所接受的类型可以是T或者它的超类。为什么是超类呢?答案是:这允许使用同一个比较器对不同的子类对象进行比较。在下面的示例中很明显地演示了这一点:

导入Java。util。数组;

导入Java。util。比较器;

动物类{

(同Internationalorganizations)国际组织大小;

}

犬类拓展动物{

公狗(国际){

size=s;

}

}

类别猫扩展动物{

公共类别(整数){

size=s;

}

}

动物比较仪类实现比较动物{

@覆盖

公共(同Internationalorganizations)国际组织比较(动物o1,动物o2) {

返回O1。尺寸-氧气。尺寸;

}

//这样,动物的所有子类都可以使用这个比较器。

}

公共类数组排序{

公共静态void main(String[] args) {

狗d1=新狗(2);

狗d2=新狗(1);

狗d3=新狗(3);

Dog[] dogArray={d1,d2,D3 };

打印狗(狗阵列);

Arrays.sort(dogArray,new AnimalSizeComparator());

打印狗(狗阵列);

系统。出去。println();

//当您有一个猫数组时,可以使用相同的比较器。

类别c1=新类别(2);

类别c2=新类别(1);

类别c3=新类别(3);

cat[]cataray={ C1,c2,C3 };

印刷狗(卡塔雷);

数组。sort(catarary,new AnimalSizeComparator());

印刷狗(卡塔雷);

}

public static void print dogs(Animal[]animals){

对于(动物甲:动物)

系统。出去。print(' size=' a . size ' ');

系统。出去。println();

}

}

输出结果:

尺寸=2尺寸=1尺寸=3

尺寸=1尺寸=2尺寸=3

尺寸=2尺寸=1尺寸=3

尺寸=1尺寸=2尺寸=3

4. 小结

与Arrays.sort()相关的信息总结如下:

通用:超级类

策略设计模式(策略模式);

归并排序(合并排序):时间复杂度n * log(n);

Java。util。collections # sort(List T List,Comparator?超级温度系数)与数组。排序使用类似的思想。

总结

以上就是本文关于Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)中的Arrays.sort()代码详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: