java数组排序,升序和降序

这篇具有很好参考价值的文章主要介绍了java数组排序,升序和降序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

对于数组的排序一直很疑惑,尤其是如何对数组进行降序排列,例如要对int[]类型的数组降序排列,这里来进行说明

基本数据类型排序

升序

int[] nums = {4, 3, 5, 2, 6, 1,7};

如果我们要对上面代码进行升序排列,我们只需要调用Arrays.sort的方法即可

java数组排序,升序和降序
将数组传入即可,支持基本数据类型,这个sort就会对数组进行排序

Arrays.sort(nums);

排序后输出结果如下

[1, 2, 3, 4, 5, 6, 7]

降序排列

对于基本数据类型,并没有现成的api,但是我们可以将排序后的数组进行翻转

        int[] nums = {4, 3, 5, 2, 6, 1,7};
        Arrays.sort(nums);
        // 翻转数组
        for (int i = 0; i < nums.length / 2; i++) {
            int t = nums[i];
            nums[i] = nums[nums.length - i - 1];
            nums[nums.length - i - 1] = t;
        }
        System.out.println(Arrays.toString(nums));

输出结果如下

[7, 6, 5, 4, 3, 2, 1]

基本数据类型包装类

升序

用基本数据类型的包装类来进行升序排列调用Aarrays.sort即可

		Integer[] nums = {4, 3, 5, 2, 6, 1,7};
        Arrays.sort(nums);
        System.out.println(Arrays.toString(nums));

降序

如果要降序排列,在sort后面传入一个Comparator接口即可,下面我使用的是lambda表达式,如果是o1-o2表示升序,o2-o1表示降序,具体的在下面的对象排序里面讲

		Integer[] nums = {4, 3, 5, 2, 6, 1, 7};
        Arrays.sort(nums, (o1, o2) -> o2 - o1);
        System.out.println(Arrays.toString(nums));

输出内容如下

[7, 6, 5, 4, 3, 2, 1]

对象排序

升序

下面是我自定义的一个Cat类

class Cat {
    String name;
    int age;

    public Cat(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    @Override
    public String toString() {
        return "Cat{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

初始的Cat类数组如下

        Cat[] cats = {
                new Cat("大黄", 2),
                new Cat("小黑",1),
                new Cat("旺财", 3),
                new Cat("大黑", 4)
        };

该数组没排序前输出如下

Cat{name='大黄', age=2}
Cat{name='小黑', age=1}
Cat{name='旺财', age=3}
Cat{name='大黑', age=4}

下面我想对年龄进行排序,我们使用的也是Arrays.sort

java数组排序,升序和降序
我们需要传入一个Comparator,new一个,实现里面的compare方法即可,sort会根据compare返回的值来进行排序,如果返回负数就会将前面个值放到前面

		Arrays.sort(cats, new Comparator<Cat>() {
            @Override
            public int compare(Cat cat1, Cat cat2) {
                return cat1.age - cat2.age;
            }
        });

或者使用lambda表达式

Arrays.sort(cats, (cat1, cat2) -> cat1.age - cat2.age);

也可以写成下面这种写法

Arrays.sort(cats, Comparator.comparingInt(cat -> cat.age));

最后的一种写法就表示使用Cat的age属性来进行比较,三种写法输出结果都是升序排列的,如下

Cat{name='小黑', age=1}
Cat{name='大黄', age=2}
Cat{name='旺财', age=3}
Cat{name='大黑', age=4}

降序

会升序排列了,降序就是将compare的结果变成相反就行了

        Arrays.sort(cats, new Comparator<Cat>() {
            @Override
            public int compare(Cat cat1, Cat cat2) {
                return cat2.age - cat1.age;
            }
        });

lambda写法如下

Arrays.sort(cats, (cat1, cat2) -> cat2.age - cat1.age);

我们也可以这样写

Arrays.sort(cats, Comparator.comparingInt(cat -> -cat.age));

输出结果都是降序排列的文章来源地址https://www.toymoban.com/news/detail-412627.html

Cat{name='大黑', age=4}
Cat{name='旺财', age=3}
Cat{name='大黄', age=2}
Cat{name='小黑', age=1}

到了这里,关于java数组排序,升序和降序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java lamda对List<JSONObject>里多个动态属性字段进行动态的降序或者升序

            最近做到一个需求,需要把业务侧返回的数据(格式为ListJSONObject),然后根据前端传来的排序字段、以及升降序属性来排序并返回给前端。要对ListJSONObject中的多个属性字段进行动态的升序或降序排序,我们可以根据需要使用Comparator.comparing()方法和Comparator.reverseOrd

    2024年02月15日
    浏览(43)
  • SQL:查询结果升序、降序排列

    SQL 查询时,查询结果按照某一列参数升序或者降序排列后再输出是常见的用法,本文主要介绍了利用 order by 对输出结果进行排序的用法 本文部分内容参考自: SQL37 查找后多列排序 SQL38 查找后降序排列 一句话说明:order by 可以按照降序或者升序对检索结果进行排序 强调:

    2024年02月05日
    浏览(60)
  • mysql中desc的两种用法---1、查询表结构和降序

    1、查询表结构 语法: desc table_name; PS:此处desc是describe的缩写,用法: desc 表名/查询语句 2、降序 语法: select * from 表 order by 字段 desc select ename,sal from emp order by sal desc; 手动指定按照薪水由大到小排序(降序desc) select ename,sal from emp order by sal asc; 手动指定按照薪水

    2024年02月13日
    浏览(50)
  • 对HashMap的value做升序、降序

    } 因为结果要求是有序的,所以返回的类型必须是LinkedHashMap

    2024年02月11日
    浏览(34)
  • 【在一个升序数组中插入一个数仍升序输出】

    有一个升序数组nums,给一个数字data,将data插入数组nums中仍旧保证nums升序,返回数组中有效元素个数。 比如:nums[100] = {1, 2, 3, 5, 6, 7, 8, 9} size = 8 data = 4 插入之后,nums为{1, 2, 3, 4, 5, 6, 7, 8, 9} 返回 size = 9 方法一:插入排序 1.1方法解析 1.遍历数组nums,找到第一个大于等于dat

    2024年02月13日
    浏览(41)
  • 7 | 计算每个键对应的平均值,并按降序排序

    假设您有一个包含销售订单的RDD,其中每个元素是一个键值对,其中键表示产品名称,值表示销售数量。您希望按产品名称对销售订单进行分组,并计算每个产品的总销售数量。最后,希望获得每个产品的总销售数量以及按产品名称分组的详细销售订单列表。 计算每个键对应

    2024年02月10日
    浏览(40)
  • Java中对于List<Map>对象中的相关操作(排序、最大值、最小值、和、平均数)

    一、对List Map 中指定键对应的值进行排序 注意: (1)、升序和降序的主要区别就是方法中调用compareTo方法的对象不同,其余没有变化 (2)、Map集合的getOrDefault方法是为了防止出现空指针异常(如果你的数据都不为空则可以直接用get方法进行取值) 二、获取List Map 中的指定键对应的

    2024年02月16日
    浏览(40)
  • 排序前言&冒泡排序

    目录 排序应用 常见的排序算法   BubbleSort冒泡排序 整体思路 图解分析 ​ 代码实现 每趟 写法1 写法2 代码NO1 代码NO2优化 时间复杂度 排序:所谓排序,就是使一串记录,按照其中的某个或某些的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序

    2024年02月19日
    浏览(39)
  • 练习-用指针方法将n个整数按升序排列(选择排序)

    #includestdio.h//头文件  int main()//主函数  {   void sort(int **point,int number); //sort排序函数声明    int i,number,data[20],**point,*pstr[20]; //定义变量    scanf(\\\"%d\\\",number);//键盘输入    for(i=0;inumber;i++) {     pstr[i]=data[i]; //将第i个整数的地址赋予指针数组pstr的第i个元素    }   for(i=0;inumber

    2024年02月04日
    浏览(47)
  • java数组.day16(冒泡排序,稀疏数组)

    冒泡排序无疑是最为出名的排序算法之一,总共有八大排序! 冒泡的代码还是相当简单的,两层循环,外层冒泡轮数,里层依次比较,江湖中人人尽皆知。 我们看到嵌套循环,应该立马就可以得出这个算法的时间复杂度为O(n2)。 代码示例: 当一个数组中大部分元素为0,或者

    2024年04月11日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包