详解Java sort()数组排序(升序和降序)

 更新时间:2021年01月21日 10:01:26   作者:c语言中文网  
这篇文章主要介绍了详解Java sort()数组排序(升序和降序),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

我们在学习 Java 的过程中肯定会遇到对数组进行升序或降序等排序问题,本节主要介绍如何实现 Java 数组的升序和降序。Java 语言使用 Arrays 类提供的 sort() 方法来对数组进行排序。

升序

使用 java.util.Arrays 类中的 sort() 方法对数组进行升序分为以下两步:

  1. 导入 java.util.Arrays 包。
  2. 使用 Arrays.sort(数组名) 语法对数组进行排序,排序规则是从小到大,即升序。

假设在数组 scores 中存放了 5 名学生的成绩,现在要实现从低到高排列的功能。在这里使用 Arrays.sort() 方法来实现,具体代码如下:

public static void main(String[] args) {
  // 定义含有5个元素的数组
  double[] scores = new double[] { 78, 45, 85, 97, 87 };
  System.out.println("排序前数组内容如下:");
  // 对scores数组进行循环遍历
  for (int i = 0; i < scores.length; i++) {
    System.out.print(scores[i] + "\t");
  }
  System.out.println("\n排序后的数组内容如下:");
  // 对数组进行排序
  Arrays.sort(scores);
  // 遍历排序后的数组
  for (int j = 0; j < scores.length; j++) {
    System.out.print(scores[j] + "\t");
  }
}

如上述代码所示,要对一个数组进行升序排列,只需要调用 Arrays.sort() 方法即可。运行后的输出结果如下所示。

排序前数组内容如下:
78.0    45.0    85.0    97.0    87.0  
排序后的数组内容如下:
45.0    78.0    85.0    87.0    97.0

降序

在 Java 语言中使用 sort 实现降序有两种方法,简单了解即可。

1)利用 Collections.reverseOrder() 方法(Collections 是一个包装类。大家可以学习《Java Collections类》一节详细了解):

public static void main(String[] args) {
  Integer[] a = { 9, 8, 7, 2, 3, 4, 1, 0, 6, 5 };  // 数组类型为Integer
  Arrays.sort(a, Collections.reverseOrder());
  for (int arr : a) {
    System.out.print(arr + " ");
  }
}

输出结果如下:
9 8 7 6 5 4 3 2 1 0

2)实现 Comparator 接口的复写 compare() 方法,代码如下:

public class Test {
  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;
  }
}

输出结果如下所示。
9 8 7 6 5 4 3 2 1 0

注意:使用以上两种方法时,数组必须是包装类型,否则会编译不通过。

在 Java 中实现数组排序的方式很多,除了利用以上的几种方法外,还可以编写自定义方法来实现自己的排序算法,有兴趣的读者可以尝试编写。

Java排序方法sort的使用详解

对数组的排序:

//对数组排序
public void arraySort(){
  int[] arr = {1,4,6,333,8,2};
  Arrays.sort(arr);//使用java.util.Arrays对象的sort方法
  for(int i=0;i<arr.length;i++){
    System.out.println(arr[i]);
  }
}

对集合的排序:

//对list升序排序
  public void listSort1(){
    List<Integer> list = new ArrayList<Integer>();
    list.add(1);
    list.add(55);
    list.add(9);
    list.add(0);
    list.add(2);
    Collections.sort(list);//使用Collections的sort方法
    for(int a :list){
      System.out.println(a);
    }
  }
  //对list降序排序
  public void listSort2(){
    List<Integer> list = new ArrayList<Integer>();
    list.add(1);
    list.add(55);
    list.add(9);
    list.add(0);
    list.add(2);
    Collections.sort(list, new Comparator<Integer>() {
      public int compare(Integer o1, Integer o2) {
        return o2 - o1;
      }
    });//使用Collections的sort方法,并且重写compare方法
    for(int a :list){
      System.out.println(a);
    }
  }

到此这篇关于详解Java sort()数组排序(升序和降序)的文章就介绍到这了,更多相关Java sort()数组排序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决java使用axios.js的post请求后台时无法接收到入参的问题

    解决java使用axios.js的post请求后台时无法接收到入参的问题

    今天小编就为大家分享一篇解决java使用axios.js的post请求后台时无法接收到入参的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • Spring Batch实现批量处理

    Spring Batch实现批量处理

    本文主要介绍了Spring Batch进行批量处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • springboot中的controller注意事项说明

    springboot中的controller注意事项说明

    这篇文章主要介绍了springboot中的controller注意事项说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • java数据结构关于栈的实例应用

    java数据结构关于栈的实例应用

    大家好,本篇文章主要讲的是java数据结构关于栈的实例应用,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • 聊聊Java Double相加出现的怪事

    聊聊Java Double相加出现的怪事

    这篇文章主要介绍了Java Double相加出现的怪事,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Servlet编程第一步之从零构建Hello World应用详细步骤+图解

    Servlet编程第一步之从零构建Hello World应用详细步骤+图解

    本文详细介绍了Servlet和maven的基本概念及其在JavaWeb开发中的应用,首先解释了Servlet是一个在服务器上处理请求的Java程序,然后介绍了maven作为管理和构建Java项目的工具,需要的朋友可以参考下
    2024-10-10
  • 关于Java中反射的作用义及使用方法

    关于Java中反射的作用义及使用方法

    这篇文章主要介绍了关于Java中反射的作用义及使用方法,反射使得程序可以在运行时对类进行检查和操作,而不需要在编译时知道类的完整信息,需要的朋友可以参考下
    2023-07-07
  • java使用短信设备发送sms短信的示例(java发送短信)

    java使用短信设备发送sms短信的示例(java发送短信)

    这篇文章主要介绍了java使用短信设备发送sms短信的示例(java发送短信),需要的朋友可以参考下
    2014-04-04
  • 如何使用SpringBoot集成Kafka实现用户数据变更后发送消息

    如何使用SpringBoot集成Kafka实现用户数据变更后发送消息

    Spring Boot集成Kafka实现用户数据变更后,向其他厂商发送消息,我们需要考虑配置Kafka连接、创建Kafka Producer发送消息、监听用户数据变更事件,并将事件转发到Kafka,本文分步骤给大家讲解使用SpringBoot集成Kafka实现用户数据变更后发送消息,感兴趣的朋友一起看看吧
    2024-07-07
  • nacos gateway动态路由实战

    nacos gateway动态路由实战

    这篇文章主要介绍了nacos gateway动态路由实战,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09

最新评论