Java中Arrays.sort()自定义数组的升序和降序排序

   Java学习中会遇到对数组进行升序或者降序排序的问题,其实Java语言提供给我们Array.sort(int [] arr)对数组进行升序排列,代码如下:
package peng;

import java.util.Arrays;

 public class Testexample {
    public static void main(String[] args) {
         int[] a = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};        
         Arrays.sort(a);
         for(int arr:a) {
              System.out.print(arr + " ");
    		     }
      }
  }

    但是如果我们想要进行降序排序呢?Java提供了很灵活的自定义的方法:

  • 利用Collections.reverseOrder()方法:
    package peng;
    
    import java.util.Arrays;
    import java.util.Collections;
    
    public class Testexample {
        	   public static void main(String[] args) {
        		           int[] a = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
        		           Arrays.sort(a,Collections.reverseOrder());
        		           for(int arr:a) {
        		               System.out.print(arr + " ");
        		           }
        		       }
        		   }
    • 实现Comparator接口的复写compare()方法,代码如下:
      package peng;
      
      import java.util.Arrays;
      import java.util.Collections;
      import java.util.Comparator;
      
      public class Testexample {
          	   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 arr:a) {
          		               System.out.print(arr + " ");
          		           }
          		       }
          		   }
          		   //实现Comparator接口
          		   class MyComparator implements Comparator<Integer>{
          		      @Override
          		       public int compare(Integer o1, Integer o2) {
          		        /*如果o1小于o2,我们就返回正值,如果o1大于o2我们就返回负值,
          		         这样颠倒一下,就可以实现降序排序了,反之即可自定义升序排序了*/
          		       return o2-o1;    
             }
          	
        }


  • 29
    点赞
  • 103
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值