这篇文章主要介绍了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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。