java.util.Arrays 类

java.util.Arrays


Arrays 类中包含了用于操作数组的各种方法(如排序和搜索),还包含一个静态工厂,可以将数组视为列表。

除非另有说明,如果指定的数组引用为 null,则该类中的方法都会抛出 NullPointerException 异常。

该类的实现者可以自定义替代该类中的方法,只要符合规范即可,比如,sort(object[]) 方法不必是一个合并排序算法,但一定要是稳定的。

此类是 Java Collections Framework 的成员。


常用的方法:

以下函数没有特殊说明的情况下,可以将 int 类型数组替换成 byte, char, double, float, long, Object, short, T(自定义)类型,用法不变。

static int binarySearch(int[] a, int key) - 使用二分检索法搜索指定的整形数组中是否有指定的值 key,如果存在,则返回该值第一次出现的地方的下标(以 0 为开始),如果不存在,则返回一个负整数。

static int binarySearch(int[] a, int fromIndex, int toIndex, int key) - 使用二分检索法搜索指定的整形数组中指定的区间是狗有指定的值 key,参数 fromIndex 为搜索区间的起始下标,toIndex 为结束下标,检索区间包括 fromIndex 指明的元素而不包括 toIndex 指明的元素,起点为负值与终点超出最大下标值均会造成运行时报错。如果存在,则返回该值出现的地方在整个数组的下标,如果不存在,则返回一个负整数。值得注意的是,如果搜索的 key 值在该数组中多次出现,并且指定的区间内没有包括所有等于该值的元素,即使存在部分,但是还是会返回负值;如果指定的区间内包括了所有的等于该值的元素,则会返回第一个元素在整个数组中的下标。

static int[] copyOf(int[] original, int newLength) - 复制指定的数组,从头截取原数组或使用 0 填充尾部,使新的数组长度为 newLength。其他类型的数组用法相同。(byte, double, float, long, short 用 0 填充,boolean 用 false 填充,char 用 null 字符填充,T 用 null 填充)

static int[] copyOfRange(int[] original, int from, int to) - 复制指定范围的数组,参数 from 为复制的起点,to 为赋值的终点,但是复制的范围和二分检索一样只包括起点不包括终点。参数 from 为负数运行时会报错,参数 to 超过原数组最大下标时用 0 填充,其他类型的数组用对应的值填充。

static boolean equals(int[] a, int[] a2) - 比较两个数组是否相同,如果相同则返回 true,不同则返回 false。

static void fill(int[] a, int val) - 使数组 a 中所有元素替换为 val。

static void fill(int[] a, int fromIndex, int toIndex, int val) - 使数组 a 中指定的区间内所有元素替换为 val,替换区间包括起点而不包括终点,如果起点为负数或终点超出最大下标,则运行时会报错。

static void sort(int[] a) - 对指定的数组按升序进行排序。boolean 型数组不可排序,自定义类型数组则按定义的比较器产生的顺序,函数原型为 static void sort(T[] a, Comparator<? super T> c)

static void sort(int[] a, int fromIndex, int toIndex) - 对指定数组的指定区间按升序进行排序,区间包括起点不包括终点,起点为负数或终点超出最大下标值运行时会报错,自定义类型数组则按定义的比较器产生的顺序,函数原型为 static void sort(T[] a, int fromIndex, int toIndex, Comparator<? super T> c)

static void parallelSort(int[] a) - Java 8 新增的并行排序算法,功能和用法和上述相同,数据显示,在对大量数据的排序时,并行排序算法 parallelSort 效率要高于上文经过调优的快速排序算法 sort。(https://sanaulla.info/2013/04/08/arrays-sort-versus-arrays-parallelsort/)

static void parallelSort(int[] a, int fromIndex, int toIndex) - 同上。

static String toString(int[] a) - 以字符串表示形式返回指定数组的内容。


示例代码:

import java.util.Arrays;

public class ArraysDemo
{
    private static int a[] = {28, 70, 12, 99, 1, 70, 53};
    private static int b[] = {70, 12, 99, 1, 70, 53, 28};
    private static int c[];
    private static int d[] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
    public static void main(String args[])
    {
    	System.out.println(Arrays.binarySearch(a, 99));
        System.out.println(Arrays.binarySearch(a, 1, 5, 70));
        c = Arrays.copyOf(a, 10);
        System.out.println(Arrays.toString(c));
        c = Arrays.copyOfRange(a, 1, 3);
        System.out.println(Arrays.toString(c));
        System.out.println(Arrays.equals(a,b));
        Arrays.fill(b, 100);
        System.out.println(Arrays.toString(b));
        Arrays.fill(b,1,5,50);
        System.out.println(Arrays.toString(b));
        Arrays.sort(a);
        System.out.println(Arrays.toString(a));
        Arrays.sort(d, 3, 7);
        System.out.println(Arrays.toString(d));
    }
}


结果:



部分结果解释:

a[] = {28, 70, 12, 99, 1, 70, 53}

Arrays.binarySearch(a, 1, 5, 70) 得到的结果为 -4,即检索失败。

该函数的目的是从 a[1] 到 a[4] 中(检索区间不包括指定的终点,即 a[5])检索值为 70 的元素,由上文中的说明,当数组中存在多个值等于 70 的元素时,如果检索的区间没有包括所有值等于 70 的元素,即使区间中存在部分值为 70 的元素,结果也是检索失败,函数依然返回负值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值