javaSE数组排序 java.util.Arrays.sort()

import java.util.Arrays;
import java.util.Comparator;
import java.util.Random;

public class TestArrSort {

    public static void main(String[] aa) {
//        sort1();
//        sort2();
//        sort3();
        myTestArraysSort();
    }


    public static void sort1() {
        Integer[] nums = new Integer[10];
        //数组下标范围是0-9
        //随机数
        Random random = new Random();
        for (int i = 0; i < 10; i++) {
            //注意这里nums[i]是整数integer对象,不是整型int
            nums[i] = random.nextInt(1, 101);
        }
        //有必要系统研究一下Arrays类,当然前提是会用,
        /*
        *
        toStirng方法输出结果[70, 64, 45, 71, 83, 6, 44, 62, 85, 22]
        * println("["+nums[0]);
         * */
        System.out.println("排序前:" + Arrays.toString(nums));

        //升序排序,参数是Object类,使用了多态
        Arrays.sort(nums);
        //排序后结果输出
        System.out.println("升序排序后:" + Arrays.toString(nums));

        //降序排序
        //创建了一个接口,这个接口应该有一个方法比较compare
        //这就是规范
        //然后我们覆盖方法之后就能排序了 。
        //当然,是不是很疑惑,前面也排序了,但是没有new接口(其实接口也是不能new的,我们new的应该是一个具体实现类,具体我还需要学习。)
        //答案就是:前面的排序是人家默认就有的接口,这里是我们写方法覆盖前面方法
        //不要忘了最终目的,实现降序排序
        Arrays.sort(nums, new Comparator<Integer>() {
            @Override
            public int compare(Integer obj1, Integer obj2) {

                //前者减后者
                // 注意obj1还是对象,不是整型值,这里绝对不是 5-1 那么简单
                //如果是这样,那么是升序,也就是没有覆盖的方法
//              return obj1-obj2;
                //后者减前者--最终实现降序排序
                return obj2 - obj1;
            }
        });
        System.out.println("降序排序后:" + Arrays.toString(nums));
        //idea又给我提示了说有更简单的方法,于是我就用了一下,毕竟应该是更简单的方法思想更好。
        //最终就是这样, 我的jdk版本是17,这里是jdk8的最重要的新特性Lambda 表达式
        //具体我也不会,暂时没有学
        //我研究了一下,找到了等价关系,我想升序,所以把用前者减后者了,
        /*
         * 等级关系就是
         * 参数obj1,obj2一一对应,返回值obj1,obj2一一对应 ;->有点像新版的switch表达式<-
         * 注意这里obj1,obj2都是nums数组的元素,所以它们是Integer类,不是int
         * obj2 - obj1 绝对不能理解成简单的值相减
         * */
        Arrays.sort(nums, (obj1, obj2) -> obj1 - obj2);

        //测试--
        System.out.println("升序排序后:" + Arrays.toString(nums));

        //先给它降序一下
        Arrays.sort(nums,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漫漫程序鹿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值