目录

  • 1.第一种
  • 2.第二种方法
  • 3.第三种方法
  • 4.额外补充 for each的语法结构

直奔主题

Arrays.sort()有三种用法

1.第一种

Arrays.sort(int [] a)
查看源码

 public static void sort(int[] a) {DualPivotQuicksort.sort(a, 0, a.length - 1, null, 0, 0);}

即对一个数组的所有元素进行排序
而且排序的时候是从小到大
所以在使用的时候则为

public class text1
{public static void main(String []args){int[] a=new int[]{10,1,6,8,4,5};System.out.println("默认排序是从小到大");Arrays.sort(a);for (int i=0;i<a.length;i++){System.out.print(a[i]+" ,");}}
}

输出的结果为:


2.第二种方法

Arrays.sort(int[] a, int fromIndex, int toIndex)
查看源码

 public static void sort(int[] a, int fromIndex, int toIndex) {rangeCheck(a.length, fromIndex, toIndex);DualPivotQuicksort.sort(a, fromIndex, toIndex - 1, null, 0, 0);}

使用规则则为从fromIndex<=a数组<toIndex

public class text1
{public static void main(String []args){int[] a=new int[]{10,1,6,8,4,5};System.out.println("从1到4的排序,也就是1到3的排序");Arrays.sort(a,1,4);for (int i=0;i<a.length;i++){System.out.print(a[i]+" ,");}}
}

输出结果为


3.第三种方法

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

可以实现降序排序
错误用法:
要实现减序排序,得通过包装类型数组,基本类型数组是不行滴

public class text1
{public static void main(String []args){int [] a=new int[]{1,6,8,4};Arrays.sort(a, Collections.reverseOrder());for (int b:a){System.out.print(b+" ");}}
}

正确用法:
用java自带的函数Collections.reverseOrder()

public class text1
{public static void main(String []args){Integer[] integers=new Integer[]{2,324,4,4,6,1};Arrays.sort(integers, Collections.reverseOrder());for (Integer integer:integers){System.out.print(integer+" ");}}
}

或者是使用自定义的排序方法,自定义排序方法需要实现java.util.Comparetor接口中的compare方法

int compare(Object obj1, Object obj2);
public class text1
{public static void main(String []args){Integer[] integers=new Integer[]{2,324,4,4,6,1};Arrays.sort(integers, new Comparator<Integer>() {public int compare(Integer o1, Integer o2) {return o2 - o1;}});for (Integer integer:integers){System.out.print(integer+" ");}}
}

输出结果为:

关于自定义排序的补充:
Arrays.sort(int[],Comparator)这个api,需要返回一个int类型的值,一般会直接使用两数相减来直接得出这两个数的相对顺序,如果大数据的时候会溢出

Arrays.sort(points,new Comparator<int []>(){public int compare(int[] points1,int []points2){return points1[1]-points2[1];}});

具体可参考这道题:
leetcode:452. 用最少数量的箭引爆气球

具体使用下标0还是下标1排序,主要看用的左边界排序还是右边界排序

正确的格式防止溢出可看以下:
为此可使用三目运算符

Arrays.sort(points,new Comparator<int []>(){public int compare(int[] points1,int []points2){if(points1[1]>points2[1])return 1;else if(points1[1]<points2[1])return -1;else return 0;}});//或者lambda表达式
Arrays.sort(points, (p1, p2) -> p1[1] < p2[1] ? -1 : 1);

或者使用如下:Integer.compare(int,int)

Arrays.sort(points,(o1,o2)->Integer.compare(o1[1],o2[1]));

4.额外补充 for each的语法结构

for(元素类型t 元素变量x : 遍历对象obj){引用了x的java语句;
}

java中的Arrays.sort()的几种用法相关推荐

  1. Java中关于Arrays.sort的两种重载方法的理解

    前言 在java中重载排序方法的方法目前有两种,一种是实现Comparable接口的compareTo方法,还有一种是用比较器(comparator) 作为参数,其中比较器是实现了Comparator ...

  2. Java Arrays.sort()的几种用法

    Java的Arrays类中有一个sort()方法,该方法是Arrays类的静态方法,在需要对数组进行排序时,非常的好用. 但是sort()的参数有好几种,下面我就为大家一一介绍,这几种形式的用法. = ...

  3. java中关于Arrays.sort()方法的使用

    通过Arrays类事物静态sort()方法可以实现对数组的排序.sort方法提供了多种重载方式,可以对任意类型的数组进行升序排序. 方法摘要: Type Method Description stat ...

  4. Java中的Arrays.sort(int[])

    Arrays.sort(int[]) Arrays.sort(int[])使用的是quicksort+merge sort. 使用quicksort:当数组长度比较小(right-left<28 ...

  5. java sort 第二个参数_详解java Collections.sort的两种用法

    Collections是一个工具类,sort是其中的静态方法,是用来对List类型进行排序的,它有两种参数形式: public static > void sort(List list) { l ...

  6. java 判断数组已经存满_详解Java中数组判断元素存在几种方式比较

    1. 通过将数组转换成List,然后使用List中的contains进行判断其是否存在 public static boolean useList(String[] arr,String contai ...

  7. java 中lock,java中lock获取锁的四种方法

    在java接口中会存放着许多方法,方便线程使用时的直接调用.对于lock接口大家都不陌生,我们已经初步对概念进行了理解.那么在获取锁的方法上想必还不是很清楚.下面我们就lock获取锁的四种方法分别进行 ...

  8. Java中的string定义的两种方法和区别

    java中的String定义的两种方法和区别 第一种:new方式 String s1 = new String("hello world"); String s2 = new St ...

  9. Java中List for循环的6种写法总结(推荐)(亲测)

    如下所示: List<String> list = new ArrayList<String>(); ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

最新文章

  1. 单独的plsql链接数据库
  2. python画统计图怎么在右上角表示哪条线代表什么_Python-matplotlib统计图之箱线图漫谈...
  3. boolean类型_JS核心理论之《数据类型、类型转换、深浅拷贝与参数传递》
  4. Find和FirstOrDefault()有什么区别?
  5. sonar 代理_Sonar
  6. Numpy 之Fancy indexing
  7. 小红书笔记api_超级干货丨小红书种草笔记如何写?
  8. 12002.i2ctools工具
  9. Java面试题:List一边遍历,一边删除
  10. 在datasnap 中使用unidac 访问数据(客户端)
  11. Ubuntu 12.04忘记登录密码及修改密码
  12. 4 读写文件_WEB安全之SQL注入(4)——读写文件
  13. Java 数据结构之双链表
  14. 不要把Linux和Windows比较
  15. 计算机网络实验视频word,(完整word版)《计算机网络与通信》实验.docx
  16. 网传铁饭碗职业排名,公务员仅排第八!
  17. 物联网LoRa系列-2:LoRa系统架构与协议栈详解
  18. BT没死!305个国外BT资源聚合站点大全
  19. C#即时通讯客户端源码【源码免费分享】
  20. Google商店应用上架注意事项

热门文章

  1. java社招_社招|蚂蚁金服-Java-社招
  2. 苹果CMSv10自适应视频站精品模板高端大气宽屏轮播幻灯模板
  3. setInterval和setTimeout停止的方法
  4. Excel中单元格格式对应POI 单元格类型 CellType
  5. 『 DSSM』A Multi-View Deep Learning Approach for Cross Domain User Modeling in Recommendation Systems
  6. vue项目中集成layerUI
  7. Sublime Text 常用插件
  8. AI-制作镂空剪纸效果
  9. 新版微图APP将于下周内发布
  10. (五)OpenCV | 斑点中心检测(图像矩)