初识Arrays类

一、Arrays类简要说明

Arrays类位置java.util.Arrays

Java中,数组本身并没提供什么方法,因此额外提供了Arrays工具类针对数组进行一些常见操作。

Arrays类中的方法都是 带static修饰符的,因而可以直接使用类名调用,而不用new对象再调用。

二、Arrays类常用方法示例:

1. 给数组赋值:

通过fill()方法实现,改变数组内相应下标的数组元素的值。

package com.zctou.array;

import java.util.Arrays;

public class ArrayDemo07 {
    public static void main(String[] args) {
        int[] a = new int[10];
        Arrays.fill(a,2); //把数组a的所有数组元素值改变成2
        System.out.println(Arrays.toString(a));
        Arrays.fill(a,2,5,3); //把下标从[2,5)的数组元素的值改成3,注意区间:左闭右开
        System.out.println(Arrays.toString(a));
    }
}

输出:

[2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
[2, 2, 3, 3, 3, 2, 2, 2, 2, 2] //只改变[2,4]的值,下标为5的元素值没变

2. 给数组排序:

通过sort()方法实现,给相应的数组按升序排序。

public class ArrayDemo06 {
    public static void main(String[] args) {
        int[] nums = {1,2,34,325,34,5,46,3,49,0,9,45,2,36,4};
        Arrays.sort(nums);
        System.out.println(Arrays.toString(nums));
    }
}

输出:

[0, 1, 2, 2, 3, 4, 5, 9, 34, 34, 36, 45, 46, 49, 325]

3. 数组元素比较:

通过equals()比较数组元素的值是否相等。

package com.zctou.array;

import java.util.Arrays;

public class ArrayDemo07 {
    public static void main(String[] args) {
        int[] a1 = {1,23,54,6,56,54,4};
        int[] a2 = {1,23,54,6,56,54,0};
        System.out.println(Arrays.equals(a2,a1)); //equals比较数组是否相等
    }
}

输出:

false

4. 查找数组元素:

通过binraySearch()已经排好序的数组进行二分法查找相应的元素,并返回下标。

  • 如果数组内存在该元素,则返回该元素所在的下标。
  • 如果找不到,就会返加-插入点 -1
  • 所谓 插入点,就是要查找的数在数组内的区间范围的左边下标

    • 要找元素在数组左边界,插入点 为 0
    • 要找元素在数组右边界,插入点 为 -array.lenth;
    • 要找元素在数元素范围内,插入点 为 -(区间左下标+1);
  • 示例一:找到相应元素,输出相应下标
package com.zctou.array;

import java.util.Arrays;

public class ArrayDemo07 {
    public static void main(String[] args) {
        int[] a2 = {1,23,54,6,56,54,0};
        Arrays.sort(a2);
        System.out.println(Arrays.toString(a2)); //[0, 1, 6, 23, 54, 54, 56]
        //在数组内找到23这个值的相应下标,结果为3
        System.out.println(Arrays.binarySearch(a2, 23));

    }
}

输出:

[0, 1, 6, 23, 54, 54, 56]
3
  • 示例二:找不到相应下标,输出-插入点-1
package com.zctou.array;

import java.util.Arrays;

public class ArrayDemo07 {
    public static void main(String[] args) {
        int[] a2 = {1,23,54,6,56,54,0};
        Arrays.sort(a2);
        // 排序结果:[0, 1, 6, 23, 54, 54, 56]
        System.out.println(Arrays.toString(a2));
       
        // 找到相应元素,下标为:
        // 3
        System.out.println(Arrays.binarySearch(a2, 23));
       
        // 找不到相应元素,元素10位于[6-23]之间
        // 相应下标就是[2-3]之间,插入点就是-(区间左下标+1):-(2+1)=-3
        // 返回值就是“插入点-1”:-3-1=-4
        // -4
        System.out.println(Arrays.binarySearch(a2, 10));
        
        // 找不到相应元素,元素-2,在数组左边界(-无穷,0]
        // 插入点就是 0
        // 返回值就是“插入点-1”:0-1=-1
        // -1
        System.out.println(Arrays.binarySearch(a2,-2));
        
        //元素-20,超出数组左边界,插入点为0
        //返回插入点-1 = 0-1 = -1
        //-1
        System.out.println(Arrays.binarySearch(a2,-20));
        
        // 找不到相应元素,元素-2左数组左边界[56,+无穷)
        // 插入点就是: -数组长度(arr.length),也就是 -7,
        // 返回值就是“插入点-1”:-7-1=-8
        // -8
        System.out.println(Arrays.binarySearch(a2,57));
        
        // -8
        System.out.println(Arrays.binarySearch(a2,570));
       
    }
}

输出:

[0, 1, 6, 23, 54, 54, 56]
3  //Arrays.binarySearch(a2, 23);
-4  //Arrays.binarySearch(a2, 10);
-1  //Arrays.binarySearch(a2,-2);
-1  //Arrays.binarySearch(a2,-20);
-8  //Arrays.binarySearch(a2,57);
-8  //Arrays.binarySearch(a2,570);

5. 打印数组

通过toString()打印数组,所数组拼接成字符串输出。

package com.zctou.array;

import java.util.Arrays;

public class ArrayDemo06 {
    public static void main(String[] args) {
        int[] nums = {1,2,34,325,34,5,46,3,49,0,9,45,2,36,4};
        System.out.println(Arrays.toString(nums));
    }
}

输出:

[0, 1, 2, 2, 3, 4, 5, 9, 34, 34, 36, 45, 46, 49, 325]

写在最后:

Arrays类的所有方法都是非必须掌握的,这些方法只是对常用功能做了归纳,方便调用而已。完全可以自己写出同样效果的方法,如toString的打印效果:

package com.zctou.array;

import java.util.Arrays;

public class ArrayDemo06 {
    public static void main(String[] args) {
        int[] nums = {1,2,34,325,34,5,46,3,49,0,9,45,2,36,4};
        System.out.println(Arrays.toString(nums));
        printArray(nums); //自定义打印方法
    }

    //自己定义打印一维数组
    public static void printArray(int[] args) {
        if(args == null) {
            System.out.println("空数组");
            return;
        }
        if(args.length==1) {
            System.out.println("[]");
            return;
        }
        //非空一维数组打印
        for (int i = 0; i < args.length; i++) {
            if(i==0) {
                System.out.print("[");
            }
            System.out.print(args[i]);
            if(i== args.length-1) {
                System.out.println("]");
            } else{
                System.out.print(", ");
            }
        }
    }
}

输出:

[1, 2, 34, 325, 34, 5, 46, 3, 49, 0, 9, 45, 2, 36, 4]
[1, 2, 34, 325, 34, 5, 46, 3, 49, 0, 9, 45, 2, 36, 4]
文章目录