Java中Array.sort()的几种用法_java中sort用法-程序员宅基地

技术标签: 数组排序  array  arrays.sort  数组  sort  

Java的Arrays类中有一个sort()方法,该方法是Arrays类的静态方法,在需要对数组进行排序时,非常的好用。

但是sort()的参数有好几种,下面我就为大家一一介绍,这几种形式的用法。

======================================================

1、Arrays.sort(int[] a)

这种形式是对一个数组的所有元素进行排序,并且是按从小到大的顺序。

举例如下(点“+”可查看代码):

 1 import java.util.Arrays;
 2 
 3 public class Main {
 4     public static void main(String[] args) {
 5         
 6         int[] a = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
 7         Arrays.sort(a);
 8         for(int i = 0; i < a.length; i ++) {
 9             System.out.print(a[i] + " ");
10         }
11     }
12 
13 }

View Code

运行结果如下:

0 1 2 3 4 5 6 7 8 9 

---------------------------------------------------------

2、Arrays.sort(int[] a, int fromIndex, int toIndex)

这种形式是对数组部分排序,也就是对数组a的下标从fromIndex到toIndex-1的元素排序,注意:下标为toIndex的元素不参与排序哦!

举例如下(点“+”可查看代码):

 1 import java.util.Arrays;
 2 
 3 public class Main {
 4     public static void main(String[] args) {
 5         
 6         int[] a = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
 7         Arrays.sort(a, 0, 3);
 8         for(int i = 0; i < a.length; i ++) {
 9             System.out.print(a[i] + " ");
10         }
11     }
12 
13 }

View Code

运行结果如下:

7 8 9 2 3 4 1 0 6 5 

上例只是把 9 8 7排列成了7 8 9

----------------------------------------------------------

3、public static <T> void sort(T[] a,int fromIndex, int toIndex,  Comparator<? super T> c)

上面有一个拘束,就是排列顺序只能是从小到大,如果我们要从大到小,就要使用这种方式

这里牵扯到了Java里面的泛型,如果读者不是很了解,可以暂时不去管它,如果真的很想了解,建议查阅上面我推荐的那本书,上面有详细的介绍。

读者只需要读懂下面的例子就可以了,其实就是多了一个Comparator类型的参数而已。

 1 package test;
 2 
 3 import java.util.Arrays;
 4 import java.util.Comparator;
 5 
 6 public class Main {
 7     public static void main(String[] args) {
 8         //注意,要想改变默认的排列顺序,不能使用基本类型(int,double, char)
 9         //而要使用它们对应的类
10         Integer[] a = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
11         //定义一个自定义类MyComparator的对象
12         Comparator cmp = new MyComparator();
13         Arrays.sort(a, cmp);
14         for(int i = 0; i < a.length; i ++) {
15             System.out.print(a[i] + " ");
16         }
17     }
18 }
19 //Comparator是一个接口,所以这里我们自己定义的类MyComparator要implents该接口
20 //而不是extends Comparator
21 class MyComparator implements Comparator<Integer>{
22     @Override
23     public int compare(Integer o1, Integer o2) {
24         //如果n1小于n2,我们就返回正值,如果n1大于n2我们就返回负值,
25         //这样颠倒一下,就可以实现反向排序了
26         if(o1 < o2) { 
27             return 1;
28         }else if(o1 > o2) {
29             return -1;
30         }else {
31             return 0;
32         }
33     }
34     
35 }

View Code

运行结果如下:

9 8 7 6 5 4 3 2 1 0 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41582642/article/details/84134296

智能推荐

软考网络工程师(六)_为了防止因出现网络路由环路导致ip数据包在网络中无休止地转发,ip协议在ip包头设-程序员宅基地

文章浏览阅读2k次,点赞2次,收藏18次。第六章 网络互连与互联网6.1 网络互连设备6.1.1 中继器中继器工作在物理层,它将接收到的信号重新构造转发,能够起到延长网络的作用中级器可以把不同传输介质的网络连接起来集线器就相当于多端口中继器6.1.2 网桥工作于数据链路层,网桥会分析帧地址以决定是否把收到的帧转发到拎一个网段上网桥可以互联两个采用不同数据链路层协议、不同传输介质与不同传输速率的网络。网桥以接收、存..._为了防止因出现网络路由环路导致ip数据包在网络中无休止地转发,ip协议在ip包头设

oracle 文件系统-程序员宅基地

文章浏览阅读424次。oracle 文件系统控制文件 文件在oracle数据库中扮演者很重要的角色,没有控制文件(或者控制文件损坏),运行着的实例会立即崩溃,关闭了打不开。 oracle数据库实例启动过程中,当启动到unmount时,地市知识在oracle实例分配了实例空间,然后继续启动到mount状态,这个时候控制文件就闪亮登场,因为Oracle要依据控制文件找到数据文件跟重做日志文件的路径,确定找到了再进去mount状态,至于打开数据库就是确定这些文件都一致,没有问题的话就能打开了。 ...

java基础笔记-程序员宅基地

文章浏览阅读472次。java 函数式编程 Stream流

python网络编程证书_python requests证书问题解决-程序员宅基地

文章浏览阅读102次。用requests包请求https的网站时,我们偶尔会遇到证书问题。也就是常见的SSLerror,遇到这种问题莫慌莫慌。这里没有找到合适的网站去报SSL证书的错误,所以就假装请求了一个https的网站,然后给报了SSLerror了,然后下面是解决方法可以直接关闭验证ssl证书import requests''':param proxies: (optional) Dictionary mappin..._proxies (`dict`, *optional*): dictionary mapping protocol to the url of the

eclipse开发 javafx(转)-程序员宅基地

文章浏览阅读76次。了解过JavaFX的都知道,JavaFX自从2.0版本开始,已经完全抛弃了之前的script语言,才用纯java来实现。这样的好处就是1.让使用Java的IDE进行JavaFX的开发成为可能,2.Java与JavaFX的API相互调用更容易 3.JavaFX的程序部署也更简单. e(fx)clipse就是一个eclipse上用来开发JavaFX的插件。不仅如此,在官网上还可以下载包含e..._elicpise开发javafx

随便推点

Jsp中有哪些内置对象?作用分别是什么?_jsp的上下文对象有什么yong-程序员宅基地

文章浏览阅读4.2k次,点赞2次,收藏7次。1.applicationapplication对象代表应用程序上下文,它允许JSP页面与包括在同一应用程序中的任何Web组件共享信息。2.configConfig对象允许将初始化数据传递给一个JSP页面。3.ExceptionException对象含有只能由指定的JSP“错误处理页面”访问的异常数据。4.outOut对象代表提供输出流的访问。5.pagePage对象代表JSP页面对应的Servlet类实例6.PageContextPageContext对象是Jsp页面本身的上下文,它_jsp的上下文对象有什么yong

Java分布式技术汇总_java 分布式开发常用技术-程序员宅基地

文章浏览阅读3.7k次。Java分布式技术汇总目录博客链接Dubbo面试题及答案_java 分布式开发常用技术

PCA 特征值 特征向量理解_pca特征向量-程序员宅基地

文章浏览阅读2.1k次。定义:主成分分析(Principal Component Analysis,PCA), 是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。PCA的思想是将n维特征映射到k维上(k&lt;n),这k维是全新的正交特征。这k维特征称为主成分,是重新构造出来的k维特征,而不是简单地从n维特征中去除其余n-k维特征。简单解释:具体的,假如我..._pca特征向量

ORACLE数据库权限管理-程序员宅基地

文章浏览阅读83次。Oracle权限管理一、权限分类:系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。二、系统权限管理:1、系统权限分类:DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。CO..._oracle数据库权限管理

干货 | xss攻击、绕过_超级总结_xss攻击绕过-程序员宅基地

文章浏览阅读1.3k次,点赞2次,收藏15次。简述XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java,VBScript,ActiveX,Flash或者甚至是普通的HTML。攻击成功后,攻击者可能得到更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。常用的XSS攻击手段和目的1.盗用cookie,获取敏感信息。2.利用植入Flash,通过crossdomain权限设置进一步_xss攻击绕过

【中国&部分省市】离线地图可视化的json文件_中国地图json文件-程序员宅基地

文章浏览阅读1.6w次,点赞38次,收藏108次。找了半天,终于找到了json文件。有中国地图、部分省和市的地图json文件,但是点进去发现都是数字。。。不整理一下不清楚哪个对哪个。这里帮大家整理了一下。_中国地图json文件

推荐文章

热门文章

相关标签