【Java基础】实用工具类Arrays,让使用数组更轻松。

java.util.Arrays类(操作数组)

使用前的准备:导包

import java.util.Arrays;

1.boolean equals(int[],int[])

boolean equals(int[],int[])方法:
可以用于判断两个数组是否相等,返回值是布尔类型(true或false)
案例:

import java.util.Arrays;
/**
 * @author .29.
 * @create 2022-09-11 11:34
 */
public class ArraysTool {
    public static void main(String[] args) {
        int[] arr1 = new int[]{1,2,3,4,5,6};
        int[] arr2 = new int[]{1,2,3,4,5,6};
        int[] arr3 = new int[]{1,4,3,2,5};
        int[] arr4 = arr1;
        int[] arr5 = new int[]{};
        int[] arr6 = new int[]{};
        //与相等数组比较
        boolean eql1 = Arrays.equals(arr1,arr2);
        //与不相等数组比较
        boolean eql2 = Arrays.equals(arr1,arr3);
        //数组与本身比较
        boolean eql3= Arrays.equals(arr1,arr4);
        //与空数组比较
        boolean eql4= Arrays.equals(arr1,arr5);
        //两个空数组比较
        boolean eql5= Arrays.equals(arr5,arr6);

        System.out.println("与相等数组比较:"+eql1);
        System.out.println("与不等数组比较:"+eql2);
        System.out.println("数组与本身比较:"+eql3);
        System.out.println("与空数组的比较:"+eql4);
        System.out.println("两个空数组比较:"+eql5);
    }
}

控制台输出:
在这里插入图片描述

2.String toString(int[])

String toString(int[])方法,可以用来输出数组,将数组转化成字符串,返回值是String类型。
案例:

import java.util.Arrays;
/**
 * @author .29.
 * @create 2022-09-11 11:34
 */
public class ArraysTool {
    public static void main(String[] args) {
        int[] arr = new int[]{1,2,3,4,5,6};
        int[] arr1 = new int[]{};
        int[] arr2 = null;
        System.out.println(Arrays.toString(arr));
        System.out.println(Arrays.toString(arr1));
        System.out.println(Arrays.toString(arr2));
    }
}

控制台输出:
在这里插入图片描述

3.void fill(int[] a,int fromIndex,int toIndex,int val)

void fill(int[] a,int fromIndex,int toIndex,int val) 方法,可以用来将指定的值填入到数组当中,没有返回值(返回值为空)。
注意:该方法用于填充覆盖原有的元素,不能用于增添元素,否则出现数组下标越界异常(java.lang.ArrayIndexOutOfBoundsException)

案例:

import java.util.Arrays;
/**
 * @author .29.
 * @create 2022-09-11 11:34
 */
public class ArraysTool {
    public static void main(String[] args) {
        int[] arr = new int[]{1,2,3,4,5,6};
        int a = 29;
        int b = 24;
        //(int[],int)不指定下标,完全填充
        Arrays.fill(arr,a);
        System.out.println(Arrays.toString(arr));
        //(int[],int fromIndex,int toIndex,int)指定下标
        // 从fromIndex到toIndex前的元素被填充
        Arrays.fill(arr,1,2,b);
        Arrays.fill(arr,4,6,24);
        //输出
        System.out.println(Arrays.toString(arr));

        //以下情况为不填充
        Arrays.fill(arr,1,1,b);
        Arrays.fill(arr,2,2,b);
        Arrays.fill(arr,3,3,b);
    }
}

控制台输出:
在这里插入图片描述

4.void sort(int[] a)

void sort(int[] a)方法,可用来对数组进行排序,返回值为空(没有返回值)。
案例:
LeetCode原题链接:最小K个数
题目:面试题 17.14. 最小K个数

题目描述:设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。

示例:
输入: arr = [1,3,5,7,2,4,6,8], k = 4
输出: [1,2,3,4]

实现代码:

class Solution {
    public int[] smallestK(int[] arr, int k) {
        //开辟空间,用于存放最小k个数
        int[] nums = new int[k];
        //调用Arrays工具类的sort()方法,排序数组。
        Arrays.sort(arr);
        //将排序好数组的前k个数复制到开辟的空间中
        for(int i = 0;i < k; ++i){
            nums[i] = arr[i];
        }
        //返回
        return nums;
    }
}

提交结果:
在这里插入图片描述

5.int binarySearch(int[] a,int key)

int binarySearch(int[] a,int key)方法,用于对排序好的数组进行二分法查找指定的值,返回查找到指定值的下标。
案例:

import java.util.Arrays;
/**
 * @author .29.
 * @create 2022-09-11 11:34
 */
public class ArraysTool {
    public static void main(String[] args) {
        int[] arr = new int[]{1,2,3,4,5,6,7,8};
        int a = Arrays.binarySearch(arr,1);
        int b = Arrays.binarySearch(arr,2);
        int c = Arrays.binarySearch(arr,3);
        int d = Arrays.binarySearch(arr,4);
        int e = Arrays.binarySearch(arr,5);
        int f = Arrays.binarySearch(arr,6);
        int g = Arrays.binarySearch(arr,7);
        int h = Arrays.binarySearch(arr,8);
        System.out.println(a+" "+b+" "+c+" "+d+" "+e+" "+f+" "+g+" "+h);

        //未排序
        int[] arr1 = {4,8,6,1,3,2,5,7};
        a = Arrays.binarySearch(arr1,1);
        b = Arrays.binarySearch(arr1,2);
        c = Arrays.binarySearch(arr1,3);
        d = Arrays.binarySearch(arr1,4);
        e = Arrays.binarySearch(arr1,5);
        f = Arrays.binarySearch(arr1,6);
        g = Arrays.binarySearch(arr1,7);
        h = Arrays.binarySearch(arr1,8);
        System.out.println(a+" "+b+" "+c+" "+d+" "+e+" "+f+" "+g+" "+h);
    }
}

控制台输出:
未排序数组使用binarySearch(int[] a,int key)方法效果不理想。
在这里插入图片描述

6.int[] copyOf(int[],int newLength)

copyOf()方法用于复制一个数组,可以指定返回数组的长度。
案例(与sort()方法案例一致):
void sort(int[] a)方法,可用来对数组进行排序,返回值为空(没有返回值)。
案例:
LeetCode原题链接:最小K个数
题目:面试题 17.14. 最小K个数

题目描述:设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。

示例:
输入: arr = [1,3,5,7,2,4,6,8], k = 4
输出: [1,2,3,4]

实现代码:

class Solution {
    public int[] smallestK(int[] arr, int k) {
        //调用Arrays工具类的sort()方法,排序数组。
        Arrays.sort(arr);

        //将排序好的数组复制一份副本,指定副本长度为k
        int[] nums = Arrays.copyOf(arr,k);
        
        //返回
        return nums;
    }
}

题解结果:
在这里插入图片描述
补充:如果返回数组的指定长度newLength长度大于被拷贝数组长度,多出来的位置会被0替代。
案例:

import java.util.Arrays;
/**
 * @author .29.
 * @create 2022-09-11 11:34
 */
public class ArraysTool {
    public static void main(String[] args) {
        int[] arr2 = {29,29,29,29,29};

        int[] ints = Arrays.copyOf(arr2, 10);
        System.out.println(Arrays.toString(ints));
    }
}

控制台输出:
在这里插入图片描述

总结:熟练使用工具类,可以减少代码量,有效提升工作效率,但是不要因此而忽略巩固基础。
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

.29.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值