当前位置: 首页 > news >正文

wordpress企业源码太原seo排名优化软件

wordpress企业源码,太原seo排名优化软件,飞飞影视做的网站,做gif图的网站目录 一.概述 二.实现方式 三.具体介绍 1.基本数据类型数组 2.对象数组 1)使对象实现Comparable接口 2)为对象再专门实现一个比较器类 四.进阶技巧 1.基础类型数组实现自定义比较 2.如何进行逆序排序 3.lambda表达式实现比较器类 4.List的排序方法Collection.sort()…

目录

一.概述

二.实现方式

三.具体介绍

1.基本数据类型数组

2.对象数组

1)使对象实现Comparable接口

2)为对象再专门实现一个比较器类

四.进阶技巧

1.基础类型数组实现自定义比较

2.如何进行逆序排序

3.lambda表达式实现比较器类

4.List的排序方法Collection.sort()


一.概述

Arrays.sort()是Java中的一个静态方法,用于对数组进行排序。它有多个重载版本,适用于不同的数据类型和排序需求。


二.实现方式

1.对于基本数据类型数组:

  • 排序算法:  快速排序算法(Quick-sort)
  • 时间复杂度:  O(n log n)

2.对于对象数组

  • 排序算法: 归并排序算法 (Merge-sort)
  • 时间复杂度:  O(n log n)

注意:归并排序具有稳定性(即相等的元素保持原有顺序)

如果对上述排序方法不熟悉,可以参考: 常见的排序方法-CSDN博客


三.具体介绍

1.基本数据类型数组

对于基本类型的数组:  int[],  char[],  float[],  double[],  long[],  short[]  等等,将由它们的值的大小进行升序排序

示例如下:

public class ArraysSort {public static void main(String[] args) {//创建基本类型数组arrint[] arr=new int[]{7,6,1,10,23,5};Arrays.sort(arr);//输出for(int x:arr)System.out.print(x+" ");}
}输出结果为:1 5 6 7 10 23 
Process finished with exit code 0

对于字符类型同理:

public class ArraysSort {public static void main(String[] args) {//创建基本类型数组strchar[] str=new char[]{'a','v','e','o','w','b','c'};//比较的是字符的ASCII值Arrays.sort(str);//输出for(char r:str)System.out.print(r+" ");}
}结果为:a b c e o v w 
Process finished with exit code 0

2.对象数组

如果想要对对象数组进行排序,则首先要保证对象"可比较的" ,不确定它们谁大谁小怎么进行排序呢?当然JAVA库中的一些类默认实现了大小关系,  例如String类

示例如下:

public class ArraysSort {public static void main(String[] args) {//创建对象数组stringsString[] strings=new String[]{"a","banana","apple","cherry","an","pear"};//按照字典排序来确定大小关系Arrays.sort(strings);//输出for(String str:strings)System.out.print(str+" ");}
}结果为:a an apple banana cherry pear 
Process finished with exit code 0

但是对于我们自己创建的类,系统就不知道如何确定它们的大小关系了,这个时候就需要我们来实现它们的"可比较性"

想要实现对象的比较,常见的有两种方法:

  •  使对象实现Comparable接口
  • 为对象再专门实现一个比较器类 

两种方法的具体介绍可以参考:Java中对象的比较方法_java 对象比较-CSDN博客

1)使对象实现Comparable接口

示例如下:

//为创建的类实现比较接口
class Grade implements Comparable<Grade>{//姓名String name;//数学成绩int math;//英语成绩int english;//语文成绩int chinese;public Grade(String name,int math, int english, int chinese) {this.name=name;this.math = math;this.english = english;this.chinese = chinese;}//得到总成绩public int getSum(){return math+english+chinese;}@Overridepublic int compareTo(Grade grade) {//要比较的对象为null,返回大于0的值if(grade==null)return 1;//求出它们的总分int sum1=getSum();int sum2=grade.getSum();//总分不相等则返回总分之差,否则比较语文成绩if(sum1!=sum2)return sum1-sum2;else return this.chinese-grade.chinese;}@Overridepublic String toString() {return "姓名='" + name + '\'' + ", 总分=" + getSum() + ", 语文=" + chinese ;}
}public class ArraysSort {public static void main(String[] args) {//创建自定义对象Grade grade1=new Grade("小明",77,63,82);Grade grade2=new Grade("小张",89,95,88);Grade grade3=new Grade("小红",99,60,63);//创建自定义数组Grade[] grades=new Grade[]{grade1,grade2,grade3};//对于数组按照成绩进行排序Arrays.sort(grades);//输出排名,注意是升序排序,所以下标与排名相反for(int i= grades.length-1;i>=0;i--){System.out.println("第"+(grades.length-i)+"名为"+grades[i].toString());}}}结果为:第1名为姓名='小张', 总分=272, 语文=88
第2名为姓名='小明', 总分=222, 语文=82
第3名为姓名='小红', 总分=222, 语文=63Process finished with exit code 0

2)为对象再专门实现一个比较器类

示例如下:

//为Grade类实现一个比较器类GradeComparator
public class GradeComparator implements Comparator<Grade> {@Overridepublic int compare(Grade grade1, Grade grade2) {//如果它们的地址相同,即指向的对象相同就返回0if (grade1==grade2)return 0;//要比较的对象为null,直接返回if(grade1==null)return -1;//要比较的对象为null,直接返回if(grade2==null)return 1;//求出它们的总分int sum1=grade1.getSum();int sum2=grade2.getSum();//总分不相等则返回总分之差,否则比较语文成绩if(sum1==sum2)return grade1.chinese-grade2.chinese;else return sum1-sum2;}
}public class ArraysSort {public static void main(String[] args) {//创建自定义对象Grade grade1=new Grade("小明",77,63,82);Grade grade2=new Grade("小张",89,95,88);Grade grade3=new Grade("小红",99,60,63);//创建自定义数组Grade[] grades=new Grade[]{grade1,grade2,grade3};//对于数组按照成绩进行排序,注意同时传入我们实现的比较器类Arrays.sort(grades,new GradeComparator());//输出排名,注意是升序排序,所以下标与排名相反for(int i= grades.length-1;i>=0;i--){System.out.println("第"+(grades.length-i)+"名为"+grades[i].toString());}}}结果为:第1名为姓名='小张', 总分=272, 语文=88
第2名为姓名='小明', 总分=222, 语文=82
第3名为姓名='小红', 总分=222, 语文=63Process finished with exit code 0

四.进阶技巧

1.基础类型数组实现自定义比较

对于基础类型数组,Arrays.sort()默认按照它们内部的值比较大小,本身并不支持自定义比较

但是可以将它提前包装为包装类数组,如int[]->Integer[],

然后再为Integer类实现一个比较器类就可以自定义比较了(感兴趣可以自己尝试下)

2.如何进行逆序排序

对于基础类型数组,只能等Arrays.sort()排序后,再手动逆序

对于实现了Comparable接口对象数组,如果不想修改接口

可以直接在排序时传入Collections.reverseOrder()参数来实现逆序排序

public static void main(String[] args) {//创建自定义对象Grade grade1=new Grade("小明",77,63,82);Grade grade2=new Grade("小张",89,95,88);Grade grade3=new Grade("小红",99,60,63);//创建自定义数组Grade[] grades=new Grade[]{grade1,grade2,grade3};//对于数组按照成绩进行排序,传入逆转参数Arrays.sort(grades, Collections.reverseOrder());//输出排名,此时就为降序输出了for(int i= 0;i<grades.length;i++){System.out.println("第"+(i+1)+"名为"+grades[i].toString());}}

3.lambda表达式实现比较器类

如果不熟悉lambda表达式,可以参考:lambda表达式-CSDN博客

使用Arrays.sort()排序的时候,可以使用lambda表达式直接创建一个匿名比较器内部类,

示例如下:

        //创建自定义对象Grade grade1=new Grade("小明",77,63,82);Grade grade2=new Grade("小张",89,95,88);Grade grade3=new Grade("小红",99,60,63);//创建自定义数组Grade[] grades=new Grade[]{grade1,grade2,grade3};//对于数组按照成绩进行排序Arrays.sort(grades,(a,b)->{//检测a,b是否为空值if(a==null)return -1;if(b==null)return 1;//获取总分int sum1= a.getSum();int sum2= b.getSum();//总分不相等则返回总分之差,否则比较语文成绩if(sum1==sum2)return a.chinese-b.chinese;else return sum1-sum2;});

可以发现lambda表达式非常简洁的实现了比较器类

4.List的排序方法Collection.sort()

Collection.sort() 是一个静态方法,用于对实现了 List 接口的集合进行排序

本文介绍的Arrays.sort方法与Collection.sort()使用方法基本没有区别

只是一个用来排序数组,一个用来排序实现了 List 接口的集合


本文章到这里就结束了~

http://www.dinnco.com/news/81361.html

相关文章:

  • 如何保护我做的网站模板怎样联系百度客服
  • 宝塔面板怎么做多个网站广州网站seo公司
  • 网站热力图怎么做b站视频推广网站动漫
  • 做润滑油网站图片推广官网
  • 快速建站平台源码搜多多搜索引擎入口
  • 做网站商业欺骗赔多少万能搜索网站
  • 西安网站制作托百度指数app
  • 镇江网站推广网络营销的渠道
  • 网站建设专业知识新手怎么做销售
  • 企业网站设计制作教程seo综合诊断工具
  • 微信公众号制作网站百度收录是什么意思
  • 沃航科技网站开发海外广告优化师
  • 旅游网站做seosem和seo哪个工作好
  • 推荐几个响应式网站做参考推广平台有哪些?
  • 网站开发邮件安徽网站开发哪家好
  • 花钱做推广广告哪个网站好seo推广小分享
  • 电商网站建设系统seo推广哪家服务好
  • 企业移动网站建设商反向链接查询
  • 263企业会议邮箱登录入口seo外链推广工具
  • 帮别人做网站涉嫌诈骗网站的推广
  • 哪些网站可以做ppt阿里巴巴怎么优化关键词排名
  • 微信平台与微网站开发西安网站托管
  • 做100个垂直网站百度推广开户费用
  • 湛江做网站seo的百度热搜榜排行
  • 举报非法网站要求做笔录百度搜索榜单
  • 关于做网站的外语文献企业seo顾问公司
  • 武汉百度网站排名torrentkitty磁力官网
  • 辽宁建设工程信息网怎么报名百度快照seo
  • 做饲料推广哪个网站好如何在网络上推广产品
  • 网站友情链接怎么添加网站权重查询工具