java中关于Arrays.sort()的三种用法详解

简介: java中关于Arrays.sort()的三种用法详解

       1、Arrays.sort(int[] a) :

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

代码演示:

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

在这里插入图片描述


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

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

代码演示:

 import java.util.Arrays;                                                       
        public class Main {                                                                     
        public static void main(String[] args) {         
        int[] a = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
        Arrays.sort(a, 0, 3);     //从下标0到下标2进行排序,其他不变                                               
        for(int i = 0; i < a.length; i ++) {
           System.out.print(a[i] + " ");
         }
  }
 }

原数组:9 8 7 2 3 4 1 0 6 5

  结果:7 8 9 2 3 4 1 0 6 5 

在这里插入图片描述


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

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

代码演示:

        import java.util.Arrays;
        import java.util.Comparator
          public class Main {
            public static void main(String[] args) {
               //注意,要想改变默认的排列顺序,不能使用基本类型(int,double, char)
               //而要使用它们对应的包装类
          Integer[] a = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
          //定义一个自定义类MyComparator的对象
           Comparator cmp = new MyComparator();
           Arrays.sort(a, cmp);
            for(int i = 0; i < a.length; i ++) {
             System.out.print(a[i] + " ");
         }
     }
}


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


//Comparator是一个接口,所以这里我们自己定义的类MyComparator要implents该接口
    //而不是extends Comparator

       class MyComparator implements Comparator<Integer>{
       @Override
        public int compare(Integer o1, Integer o2) {
         //如果o1小于o2,我们就返回正值,如果o1大于o2我们就返回负值,
        //这样颠倒一下,就可以实现反向排序了
        if(o1 < o2) { 
             return 1;
        }else if(o1 > o2) {
            return -1;
         }else {
             return 0;
         }
     }
      }

总结:

Arrays.sort()的用法         
 1.用来排序,从小到大
 2.部分排序      
 3.用来排序,从大到小,需要定义接口
 4.也可以用来排序字符串数组,排序是按照a到z的字母顺序

作者:KJ.JK

本文仅用于交流学习,未经作者允许,禁止转载,更勿做其他用途,违者必究。
文章对你有所帮助的话,欢迎给个赞或者 star,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习

目录
相关文章
|
4月前
|
Java
Java中的equals()与==的区别与用法
【7月更文挑战第28天】
72 12
|
30天前
|
存储 安全 Java
深入理解Java中的FutureTask:用法和原理
【10月更文挑战第28天】`FutureTask` 是 Java 中 `java.util.concurrent` 包下的一个类,实现了 `RunnableFuture` 接口,支持异步计算和结果获取。它可以作为 `Runnable` 被线程执行,同时通过 `Future` 接口获取计算结果。`FutureTask` 可以基于 `Callable` 或 `Runnable` 创建,常用于多线程环境中执行耗时任务,避免阻塞主线程。任务结果可通过 `get` 方法获取,支持阻塞和非阻塞方式。内部使用 AQS 实现同步机制,确保线程安全。
|
2月前
|
Java
Java 正则表达式高级用法
Java 中的正则表达式是强大的文本处理工具,用于搜索、匹配、替换和分割字符串。`java.util.regex` 包提供了 `Pattern` 和 `Matcher` 类来高效处理正则表达式。本文介绍了高级用法,包括使用 `Pattern` 和 `Matcher` 进行匹配、断言(如正向和负向前瞻/后顾)、捕获组与命名组、替换操作、分割字符串、修饰符(如忽略大小写和多行模式)及 Unicode 支持。通过这些功能,可以高效地处理复杂文本数据。
|
2月前
|
存储 Java 数据处理
Java 数组的高级用法
在 Java 中,数组不仅可以存储同类型的数据,还支持多种高级用法,如多维数组(常用于矩阵)、动态创建数组、克隆数组、使用 `java.util.Arrays` 进行排序和搜索、与集合相互转换、增强 for 循环遍历、匿名数组传递以及利用 `Arrays.equals()` 比较数组内容。这些技巧能提升代码的灵活性和可读性,适用于更复杂的数据处理场景。
|
1月前
|
Java
java的Random类和Arrays.sort类使用实例
java的Random类和Arrays.sort类使用实例
11 0
|
2月前
|
安全 Java
Java switch case隐藏用法
在 Java 中,`switch` 语句是一种多分支选择结构,常用于根据变量值执行不同代码块。除基本用法外,它还有多种进阶技巧,如使用字符串(Java 7 开始支持)、多个 `case` 共享代码块、不使用 `break` 实现 “fall-through”、使用枚举类型、使用表达式(Java 12 及以上)、组合条件以及使用标签等。这些技巧使代码更加简洁、清晰且高效。
|
3月前
|
Java 数据处理
Java IO 接口(Input)究竟隐藏着怎样的神秘用法?快来一探究竟,解锁高效编程新境界!
【8月更文挑战第22天】Java的输入输出(IO)操作至关重要,它支持从多种来源读取数据,如文件、网络等。常用输入流包括`FileInputStream`,适用于按字节读取文件;结合`BufferedInputStream`可提升读取效率。此外,通过`Socket`和相关输入流,还能实现网络数据读取。合理选用这些流能有效支持程序的数据处理需求。
48 2
|
4月前
|
Java
java中return,break以及continue的用法
java中return,break以及continue的用法
47 10
|
5月前
|
Java
深入理解 Java 8 函数式接口:定义、用法与示例详解
深入理解 Java 8 函数式接口:定义、用法与示例详解
304 2
|
5月前
|
Java
Java 中 MessageFormat.format 用法
Java 中 MessageFormat.format 用法
67 1
下一篇
无影云桌面