数组的常用方法

16 篇文章 1 订阅
2 篇文章 0 订阅

点击可进入 本文章b站对应视频

获取数组的长度

arr.length
如果是一位数组 直接获取数组长度
如果是二维数组
先获取某一列然后再获取数组某一列的长度
直接使用获取的是数组的行数
例子

一维数组

int[] arrA={1,2,3};
        System.out.println(arrA.length);//3

二维数组

        int[][] arrB = {{1, 2}, {2, 3, 4}};
        System.out.println(arrB.length);//2
        System.out.println(arrB[0].length);//2
        System.out.println(arrB[1].length);//3

打印数组

Arrays.toString(arr);

		int[] intArray = { 1, 2, 3, 4, 5 };
        String intArrayString = Arrays.toString(intArray);
        System.out.println(intArrayString);//[1, 2, 3, 4, 5]

因为在学习数据结构的时候会经常用到
所以 我把 具体代码写了出来

private static String toSring(int[] arr) {
        String arrs="[";
        for (int i = 0; i <arr.length ; i++) {
            arrs+=arr[i];
            if (i+1<arr.length){
                arrs+=",";
            }
        }
        arrs+="]";
        return arrs;
    }

数组扩容

注意 需要导包 import java.util.Arrays;

Arrays.copyOf(需要拷贝的数组名,拷贝后的长度);
返回拷贝扩容
拷贝后的长度如果小于原数组则只是截取部分
拷贝后的长度如果大于原数组 ,则多余部分为默认值
该方法并不会使原数组发生改变

        int[] arrA={1,2,3};
         System.out.println(Arrays.toString(arrA));//     [1,2,3]
        int[] arrB=Arrays.copyOf(arrA,arrA.length-1);
        System.out.println(Arrays.toString(arrB));[1,2]
        int[] arrC=Arrays.copyOf(arrA,arrA.length*2);
        System.out.println(Arrays.toString(arrC));//[1,2,3,0,0,0]
        System.out.println(Arrays.toString(arrA));//[1,2,3]

Arrays.copyOfRange(arr, int fromIndex, int toIndex);
复制数组范围为从fromIndex到(toIndex-1);

        int[] arrA={1,2,3};
        int[] arrB=Arrays.copyOfRange(arrA,1,3);
        System.out.println(Arrays.toString(arrB));//[2,3]

数组合并

System.arraycopy(arr, 1, arr2, 3, arr.length-1);
第一个元素 表示需要复制的原数组
第二个元素 代表从原数组的哪一个元素开始复制(下标)
第三个元素 目标数组
第四个元素 从目标数组的哪一个元素开始粘贴原数组的数据
第五个元素 复制原数组的长度是多少


        int[] arr= {0,1,2,3,4};
        int[] arr2= {10,20,30,40,50,60,70,80,90};
        System.arraycopy(arr, 1, arr2, 3, arr.length-1);
        System.out.println(Arrays.toString(arr2));
		//[10, 20, 30, 1, 2, 3, 4, 80, 90]

如果要合并两个数组
只需要先扩容然后复制

        int[] arr= {0,1,2,3,4};
        int[] arr2= {10,20,30,40,50,60,70,80,90};
        arr2=Arrays.copyOf(arr2,arr.length+arr2.length);
        System.arraycopy(arr, 0, arr2, arr2.length-arr.length, arr.length);
        System.out.println(Arrays.toString(arr2));
        //[10, 20, 30, 40, 50, 60, 70, 80, 90, 0, 1, 2, 3, 4]

数组排序

Arrays.sort(Object[] arr)
对指定对象数组根据其元素的自然顺序进行升序排列。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。
注意 :该方法是在原数组上进行修改

		int[] arrA={3,2,1};
        Arrays.sort(arrA);
        System.out.println(Arrays.toString(arrA));//[1,2,3]

Arrays.equals(long[] a, long[] a2)
如果两个指定的 long 型数组彼此相等,则返回 true。如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对都是相等的,则认为这两个数组是相等的。换句话说,如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。

        int[] arrA = {1, 2, 3};
        int[] arrB = {4, 5, 6};
        int[] arrC = {1, 2, 3};
        System.out.println(Arrays.equals(arrA,arrB));//false
        System.out.println(Arrays.equals(arrA,arrC));//true

数组查询

Arrays类的binarySearch()方法—用二分搜索法搜索指定数组—返回要搜索元素的索引值—适用于各种类型数组

-----必须在调用之前对数组进行排序(通过sort()方法)—如果数组包含多个带有指定值的元素,则无法保证找到的是哪一个

1)Arrays.binarySearch(Object[], Object key);

如果key包含在数组中,返回索引值;否则返回“-1”或“-”(插入点)

插入点:搜索键将要插入数组的那一点,即第一个大于此键的元素索引

2)Arrays.binarySearch(Object[], int fromIndex,int toIndex,Object key);

搜索范围为从fromIndex到(toIndex-1)

        int[] arrA={1,2,4,5,6};
        Arrays.sort(arrA);   //必须先将数组排序
        System.out.println(Arrays.binarySearch(arrA,1));//0
        System.out.println(Arrays.binarySearch(arrA,3));//-3
        System.out.println(Arrays.toString(arrA));

上一篇文章数组的定义

本文参考了
That_Good_Good
菜鸟教程
马继小哥哥
等 人的文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zzsaixuexi

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

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

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

打赏作者

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

抵扣说明:

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

余额充值