前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Java基础】实用工具类Arrays,让使用数组更轻松。

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

作者头像
.29.
发布2022-11-15 13:16:56
2690
发布2022-11-15 13:16:56
举报
文章被收录于专栏:个人技术博客

Java实用工具类

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

使用前的准备:导包

代码语言:javascript
复制
import java.util.Arrays;

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

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

代码语言:javascript
复制
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类型。 案例:

代码语言:javascript
复制
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)

案例:

代码语言:javascript
复制
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个数

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

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

实现代码:

代码语言:javascript
复制
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)方法,用于对排序好的数组进行二分法查找指定的值,返回查找到指定值的下标。 案例:

代码语言:javascript
复制
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个数

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

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

实现代码:

代码语言:javascript
复制
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替代。 案例:

代码语言:javascript
复制
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));
    }
}

控制台输出:

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Java实用工具类
  • java.util.Arrays类(操作数组)
    • 1.boolean equals(int[],int[])
      • 2.String toString(int[])
        • 3.void fill(int[] a,int fromIndex,int toIndex,int val)
          • 4.void sort(int[] a)
            • 5.int binarySearch(int[] a,int key)
              • 6.int[] copyOf(int[],int newLength)
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档