前言
我们在使用数组的时候,有一些功能,例如:数组拷贝,比较,排序等等,我们想完成这些功能的时候,都需要写一个方法,因此Java中就提供了一个Arrays这个工具类,帮助我们完成这些功能
我们在使用的时候都要加上使用这个包的说明

import java.util.Arrays;

一 数组打印

一维数组

我们在打印数组的时候需要双重for循环进行打印,Arrays中有toString这个方法可以用来打印一维数组

public static String toString(T[] a)//介绍
String src = Arrays.toString(T);//使用
返回类型:String(字符串类型)
T是数组元素类型
Arrays.toString(T)是取出数组名为T的所有元素

例如下面这个代码

import java.util.Arrays;
public class test {
    public static void main(String[] args) {
        //数组转字符串
        int[] array = {1,2,3,4,5};
        //使用工具类取出数组内容
        String str = Arrays.toString(array);
        System.out.println(str);
    }
}

运行结果如下
在这里插入图片描述
上面我们打印一维数组,如何打印二维数组呢,和这个一样吗

二维数组

在这里插入图片描述

Arrays.toString(array)
这里我们发现只打印两个地址,是因为这里的二维数组是由一维数组组成的
这里打印是是每行的首地址,并不是所有元素

那我们如何打印呢,这时候Arrays工具类提供了一个deepToString可以用来打印二维数组
这个用法和toString是类似的

import java.util.Arrays;
public class test {
    public static void main(String[] args) {
        int[][] array = {{1,2,3},{4,5,6}};
        System.out.println(Arrays.deepToString(array));
    }
}

运行结果如下
在这里插入图片描述

二 数组拷贝

全部拷贝(Arrays.copyof)

public static T1[] = Arrays.copyOf(T[] original,int newLength);
这里是将T数组元素全部拷贝给T1数组,这里传参传递的是T数组的起始地址和该数组的长度
import java.util.Arrays;
public class test {
    public static void main(String[] args) {
        //数组转字符串
        int[] array = {1,2,3,4,5};
        int[] array1 = Arrays.copyOf(array,array.length);
        System.out.println(Arrays.toString(array1));
    }
}

这里的array1数组结果如下
在这里插入图片描述

部分拷贝(Arrays.copyOfRange)

如果我们只是想将数组的部分内容拷贝到另一个数组该怎样操作呢

public static T1[] = Arrays.copyOfRange(T[] original,int from,int to));
这里和上面全部拷贝不同的是,我们传参后面两个,from是要拷贝数组的起始下标,to是到那个下标结束
拷贝的下标范围是[from , to), 左闭右开

例如

import java.util.Arrays;
public class test {
    public static void main(String[] args) {
        //数组转字符串
        int[] array = {1,2,3,4,5};
        int[] array1 = Arrays.copyOfRange(array,2,4);
        System.out.println(Arrays.toString(array1));
    }
}

这里是将array 数组[ 2, 4)区间的下标拷贝给array1,所以这里的array1数组内容维 3,4
在这里插入图片描述

三 查找数组元素(binarysearch)

给定⼀个数组,再给定⼀个元素,找出该元素在数组中的位置,如果有的话返回(binarySearch)

public static int binarySearch(T[] a,T key)
T是数据类型,这里是在a数组中查找key元素
如果找到返回 key所在的下标,注意返回的下标要>=0并且<=a.length小于数组长度
找不到会返回负数
import java.util.Arrays;
public class test {
    public static void main(String[] args) {
        int[] array = {1,2,3,4,5,6};
        int ret = Arrays.binarySearch(array,7);
        if((ret) >= 0){
            System.out.println("找到了,下标是:"+ret);
        }else{
            System.out.println("找不到");
        }
    }
}

运行结果如下
在这里插入图片描述

在这里插入图片描述

四 数组排序(sort)

给定⼀个数组,让数组升序(降序)排序(sort)Java中内置了一个高效率的排序

import java.util.Arrays;
public class test {
    public static void main(String[] args) {
        int[] array = {2,3,41,2,3,67,3};
        //拍的是升序
        Arrays.sort(array);
        System.out.println(Arrays.toString(array));
    }
}

运行结果如下
在这里插入图片描述

五 判断数组是否相同(equals)

我们如何判断两个数组是否相同呢,以前是一个元素的比较,Java中提供了一个equals用于数组比较

public static boolean equals(T[] a,T[] a2)
两个T类型的数组进行比较
返回的是Boolean类型,两个数组相同是true,反之返回false
import java.util.Arrays;
public class test {
    public static void main(String[] args) {
        int[] array1 = {1,2,3,4};
        int[] array2 = {1,2,3,4};
        //判断两个数组是否相同,返回boolean类型
        boolean flag = Arrays.equals(array1,array2);
        System.out.println(flag);
     }
}

运行结果如下
在这里插入图片描述
在这里插入图片描述

六 数组填充(fill)

我们有时候没有初始化,我们如果想将数组元素调整为相同内容,可以使用fill

public static void fill(T[] a,T val)
这里没有返回类型
要让我们填充数据类型与数组元素类型相同,val是填充的数值,a是被填充的数组
import java.util.Arrays;
public class test {
    public static void main(String[] args) {
        int[] array = new int[6];
        System.out.println(Arrays.toString(array));
        //这里我们没有初始化
        Arrays.fill(array,1);
        System.out.println(Arrays.toString(array));
    }
}

int类型的数组没有初始化会默认为0
运行结果如下
在这里插入图片描述
到这里就结束了,希望对大家有所帮助,欲知后事如何,请听下回分解

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐