Arrays类的函数

本文详细介绍了Java中Arrays类的几个常用方法,包括升序排序数组、自定义排序规则、填充数组元素以及将数组转换为字符串。通过示例展示了如何在不同场景下使用这些方法,对于理解和应用Java数组操作具有指导意义。
摘要由CSDN通过智能技术生成

Arrays类的一些常用函数

  1. Arrays.sort(Object[] array)

    • 对数组按照升序排序
   				int[] nums = {-3,4,0,5,6,11};
           Arrays.sort(nums);
           for(int n :nums)
               System.out.print(n+" ");
           /* 输入:-3,4,0,5,6,11 
            * 结果:-3 0 4 5 6 11 
            */
  1. Arrays.sort(Object[] array, int x, int y)

    • 在[x,y)区间内对数组进行升序排序
         int[] nums = {-3,4,0,11,6,5};
         Arrays.sort(nums,1,4);
         for(int n :nums)
             System.out.print(n+" ");
         /* 输入:-3,4,0,11,6,5 
          * 结果:-3 0 4 11 6 5  
          */
  1. Arrays.sort(Object[] array, (x, y)-> { ***});
  • 可以自定义排序(在leetcode等算法题目中碰到)
            int[] nums = {3,30,34,5,9};
			Arrays.sort(numsArr, (x, y) -> {
            long sx = 10, sy = 10;
            while (sx <= x) {
                sx *= 10;
            }
            while (sy <= y) {
                sy *= 10;
            }
            return (int) (-sy * x - y + sx * y + x);
        		});
						for(int n :nums)
            System.out.print(n+" ");
			/* 输入:3 30 34 5 9
         	 * 结果:9 5 34 3 30  
         	 */

Largest number题目:给定一组非负整数 nums={30,3,34,5,9},重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。

**注意:**输出结果可能非常大,所以你需要返回一个字符串而不是整数。

       int[] nums = {30,3,34,5,9};
        Integer[] numsArr = new Integer[nums.length];
        for (int i = 0; i < nums.length; i++) {
            numsArr[i] = nums[i];
        }

        Arrays.sort(numsArr, (x, y) -> {
            long sx = 10, sy = 10;
            while (sx <= x) {
                sx *= 10;
            }
            while (sy <= y) {
                sy *= 10;
            }
            return (int) (-sy * x - y + sx * y + x);
        });

        if (numsArr[0] == 0) {
            System.out.println(0);
        }
        StringBuilder ret = new StringBuilder();
        for (int num : numsArr) {
            ret.append(num);
        }
        System.out.println(ret);
        /* 输入:30 3 34 5 9
         * 结果:9534330  
         */
  1. Arrays.fill(Object[] array,Object object)

    • 为数组元素填充相同的值
            int[] nums = {-3,4,0,11,6,5};
            Arrays.fill(nums, 1);
            for(int i :nums)
                System.out.print(i+" ");
            /* 之前:-3 4 0 11 6 5
             * 结果:1 1 1 1 1 1 
             */
  1. Arrays.fill(Object[] array,int x,int y,Object object)

    • 为数组下标从x到y-1填充相同的值
             int[] nums = {-3,4,0,11,6,5};
             //对数组元素下标2到4的元素赋值为3
             Arrays.fill(nums,2,5,3);
             for(int i :nums)
                 System.out.print(i+" ");
             /* 之前:-3 4 0 11 6 5
              * 结果:-3 4 3 3 3 5  
              */
  1. Arrays.toString(Object[] array)

    • 以字符串形式返回数组
         int[] nums = {-3,4,0,11,6,5};
         System.out.println(Arrays.toString(nums));
         /*
          * 结果:[-3, 4, 0, 11, 6, 5]
          */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值