返回顶部
首页 > 资讯 > 操作系统 >java sort方法详解
  • 266
分享到

java sort方法详解

java数据结构 2023-08-30 15:08:17 266人浏览 安东尼
摘要

JAVA ARRAYS.SORT 方法 static void sort(ElementType[] a) 默认为升序排序 static void sort(ElementType[] a, int FromIndex,

JAVA

ARRAYS.SORT 方法

    static void sort(ElementType[] a)    默认为升序排序    static void sort(ElementType[] a, int FromIndex, int ToIndex)    在指定范围(FromIndex, ToIndex)内升序排序    static void sort(T[] a, Comparator c)    根据指定的比较器指定的顺序,对指定的对象数组进行排序。

这里对指定顺序的sort详细记录。

底层原理:插入排序+二分查找

开始的默认0索引的数据是有序序列,然后遍历数组后面的每一个元素,将每一个元素插入到前面有序序列的指定地方。

comparator比较器

Comparator是一个接口,需要重写里面的compare函数。
这里可以使用匿名内部函数类

    这里以int a[]数组为例    Arrays.sort(a, new Comparator() {        @Override        public int compare(int[] o1, int[] o2) {            return [返回值];        }    });
  1. 返回值为负数:将o1与o2前面的数进行比较
  2. 返回值为正数,将o1与o2后面的数进行比较
  3. 返回值为0,同正数。

return o1 - o2;
升序:

  1. o1 > o2时将o1与o2后面的数进行比较
  2. o1 < o2时将o1与o2前面的数进行比较
  3. o1 == o2时可插入

return o2 - o1:
降序:

  1. o1 > o2时将o1与o2前面的数进行比较
  2. o1 < o2时将o1与o2后面的数进行比较
  3. o1 == o2时可插入
注意上面的查找比较的原理是二分查找

另外还有更加简单的Lambda表达式写法

    sort(数组名, 排序规则)    升序:    sort(arr, (x, y) -> x - y);    降序:    sort(arr, (x, y) -> x - y);

sort可以对各种对象进行排序,比如下面的二维数组:
a = { {3, 3}, {2, 2}, {4, 4}, {5, 5}, {1, 1} };

    以第一个元素为关键字进行升序排序时:    sort(a, (x, y) -> x[0] - y[0]);    结果为 a = {{1,1}, {2,2}, {3,3}, {4,4}, {5,5}}    以第一个元素为关键字进行降序排序时:    sort(a, (x, y) -> y[0] - x[0]);    结果为 a = {{5,5}, {4,4}, {3,3}, {2,2}, {1,1}}        如果要以第二个元素为关键字进行排序是,将x[0]-y[0]变为x[1]-y[1]即可

除了多维数组也可以对类选择关键字进行排序:

先定义一个类:class Point { //这里是否构造函数都可以    private int val;    public int getVal() {        return this.val;    }    public void setVal(int val) {        this.val = val;    }}public class testSort {    public static void main(String[] args) throws Exception {        Point[] point = new Point[3];        // 注意下面的初始化是必须的!!!        for(int i = 0; i < point.length; i ++)            point[i] = new Point();        for(int i = 0; i < point.length; i ++) {            point[i].setVal(i);        }        // 降序:        Arrays.sort(point, (x, y) -> y.getVal()- x.getVal());        for(int i = 0; i < point.length; i ++) {            System.out.printf("point[%d] = %d\n", i, point[i].getVal());        }    }}

结果:

point[0] = 2point[1] = 1point[2] = 0

测试代码:

import java.util.Arrays;import java.util.Comparator;class Point {    private int val;//    public void Point() {//        this.val = 3;//    }    public int getVal() {        return this.val;    }    public void setVal(int val) {        this.val = val;    }}public class testSort {    public static void main(String[] args) throws Exception {        int[][] a = new int[5][2];        for(int i = 0; i < 5; i ++) {            a[i][0] = i;            a[i][1] = i;        }        Arrays.sort(a, (x, y) -> (x[0] - y[0]));        System.out.println("-----------升序---------");        for(int i = 0; i < 5; i ++) {            System.out.printf("a[%d] = {%d %d}\n",i, a[i][0], a[i][1]);        }        System.out.println();        Arrays.sort(a, (x, y) -> (y[0] - x[0]));        System.out.println("-----------降序---------");        for(int i = 0; i < 5; i ++) {            System.out.printf("a[%d] = {%d %d}\n",i, a[i][0], a[i][1]);        }        System.out.println();        // 匿名函数方法//        Arrays.sort(a, new Comparator() {//            @Override//            public int compare(int[] o1, int[] o2) {//                return o1 - o2;//            }//        });        System.out.println("-------对类排序-----");        Point[] point = new Point[3];        // 注意下面的初始化是必须的!!!        for(int i = 0; i < point.length; i ++)            point[i] = new Point();        for(int i = 0; i < point.length; i ++) {            point[i].setVal(i);        }        // 降序:        Arrays.sort(point, (x, y) -> y.getVal()- x.getVal());        for(int i = 0; i < point.length; i ++) {            System.out.printf("point[%d] = %d\n", i, point[i].getVal());        }    }}

来源地址:https://blog.csdn.net/PoisonKiller/article/details/128341563

--结束END--

本文标题: java sort方法详解

本文链接: https://lsjlt.com/news/383076.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • java sort方法详解
    JAVA ARRAYS.SORT 方法 static void sort(ElementType[] a) 默认为升序排序 static void sort(ElementType[] a, int FromIndex,...
    99+
    2023-08-30
    java 数据结构
  • Python有序容器的sort方法详解
    1. sort 方法介绍 容器.sort(key=选择排序依据的函数, reverse=True|False) 可以将有序容器进行排序。 参数 key 是要求传入一个函数,表示将容器...
    99+
    2024-04-02
  • Java排序的那些事之sort方法的使用详解
    目录引言升序数组集合降序声明一个类实现接口匿名内部类实现接口Lambda表达式实现接口自定义数据类型的排序总结:引言 在学习Java过程中,排序sort是我们常用的功能;在Java里...
    99+
    2024-04-02
  • java sort方法怎么使用
    Java中的`sort()`方法可以用来对数组或集合进行排序。你可以按照以下方式使用`sort()`方法:1. 对数组排序:```j...
    99+
    2023-09-27
    java
  • Python 列表排序方法reverse、sort、sorted详解
    python语言中的列表排序方法有三个:reverse反转/倒序排序、sort正序排序、sorted可以获取排序后的列表。在更高级列表排序中,后两中方法还可以加入条件参数进行排序。 reverse...
    99+
    2022-06-04
    详解 方法 列表
  • Python列表排序方法reverse、sort、sorted详解
    python语言中的列表排序方法有3个: reverse反转/倒序排序 sort正序排序 sorted可以获取排序后的列表 在更高级列表排序中,后两中方法还可以加入条件参数进行排...
    99+
    2024-04-02
  • python中sort()函数用法详解
    目录1.函数sort()是对列表就地排序2.函数sort()修改序列,不返回任何值3.sorted()函数会返回一个排序列表,不改变原有序列4.函数sort()是升序排序,如何降序排...
    99+
    2024-04-02
  • python数组排序方法之sort、sorted和argsort详解
    目录引言sort 和 sorted 的区别如下用法实例1.升序排序2.降序排序3.如果不想要排序后的值,想要排序后的索引,可以这样做4.字符串类型排序5.二维数组排序6.二维数组获取...
    99+
    2024-04-02
  • java中的sort方法如何使用
    在Java中,可以使用`java.util.Collections.sort()`方法来对集合进行排序。`sort()`方法接受一个...
    99+
    2023-08-15
    java sort
  • Java的sort的排序及使用详解
    目录1.按升序排列:2. 随机排序:3.按降序排列:4.根据参数属性值排序5. 根据参数不同,来确定是升序排列,还是降序排序总结sort() 方法在适当的位置对数组的元素进行排序,并...
    99+
    2024-04-02
  • Java中sort排序函数实例详解
    目录前言升序排序降序排序排序原理总结前言 手写一个排序算法的效率是很慢的,当然这也不利于我们在比赛或者工程中的实战,如今几乎每个语言的标准库中都有排序算法,今天让我来给大家讲解一下J...
    99+
    2024-04-02
  • C++sort排序函数用法详解
    目录用法两个参数用法三个参数string 使用反向迭代器来完成逆序排列最近在刷ACM经常用到排序,以前老是写冒泡,可把冒泡带到OJ里后发现经常超时,所以本想用快排,可是很多学长推荐用...
    99+
    2024-04-02
  • java自带的sort方法如何使用
    Java自带的sort方法可以用于对数组或列表进行排序。具体使用方法如下:1. 对数组排序:- 使用Arrays类的静态方法sort...
    99+
    2023-10-12
    java
  • python 的sort()函数详解
    1.函数sort()是对列表就地排序 >>> x=[8,9,0,7,4,5,1,2,3,6]>>> x.sort()>>> print(x)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]   2.函数sort()修改序列,不返...
    99+
    2023-10-01
    python 开发语言 后端
  • 详解Java sort()数组排序(升序和降序)
    在Java中,使用sort()方法可以对数组进行排序,sort()方法有两个重载的版本:一个对基本数据类型数组进行排序,一个对对象数...
    99+
    2023-08-15
    Java
  • Java sort()数组排序的方法有哪些
    在Java中,可以使用以下几种方法对数组进行排序:1. 使用Arrays类的sort()方法:Arrays类是Java提供的一个包含...
    99+
    2023-08-15
    Java sort()
  • Java Process.waitFor()方法详解
    `Process.waitFor()`方法是`java.lang.Process`类中的一个方法。它是一个阻塞方法,用于等待外部进程的结束,并返回外部进程的退出值。以下是`Process.waitFor()`方法的详细说明:方法签名:`...
    99+
    2023-08-11
    java
  • JAVA toString方法详解
    JAVA toString方法 在Java中,我们经常会编写许多自定义类。在使用时,我们如何打印出这些类中实例变量? class value { private int s; publi...
    99+
    2023-10-27
    java 开发语言 后端
  • Redis sort 排序命令详解
    本文介绍redis排序命令 redis支持对list,set,sorted set元素的排序 sort 排序命令格式: sort key [BY pattern] [LIMIT start count] ...
    99+
    2022-06-04
    详解 命令 Redis
  • Java中Date方法详解
    先进行专栏介绍 本专栏是自己学Java的旅途,纯手敲的代码,自己跟着黑马课程学习的,并加入一些自己的理解,对代码和笔记 进行适当修改。希望能对大家能有所帮助,同时也是请大家对我进行监督,对我写的代码进行建议,互相学习。 Date方法 Da...
    99+
    2023-08-16
    java 开发语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作