数组类Array
概述
-
Array为数组类,它是Java中的一个最基本的存储结构,
-
其容量是固定的,并且无法动态改变
-
只能存放同一数据类型的数据。
-
Array
类提供静态方法来动态创建和访问Java数组。 -
没有构造方法
-
public final class Array extends Object
常用方法
static Object get(Object array, int index)
//返回指定数组对象中的索引对应的值。
static boolean getBoolean(Object array, int index)
//返回指定数组对象中的索引组件的值,如 boolean 。 还有getInt,getChar等各种类型的方法
static void set(Object array, int index, Object value)
//将指定数组对象的索引对应的值设置为指定的新值。
static void setBoolean(Object array, int index, boolean z)
//将指定数组对象的索引组件的值设置为指定的 boolean值。 还有setInt,setChar等各种类型的方法
static Object newInstance(类<?> componentType, int... dimensions)
//创建具有指定组件类型和尺寸的新数组。
static Object newInstance(类<?> componentType, int length)
//创建具有指定组件类型和长度的新数组。
Arrays
概述
-
静态工具类,没有构造方法
-
该类包含用于操作数组的各种方法(搜索、排序、复制等静态方法)。
-
如果指定的数组引用为空,则该类中的方法都抛出一个
NullPointerException
-
public class Arrays extends Object
常用成员方法
排序功能
static void sort(Object[] a)
//按照数字顺序进行排序
static void parallelSort(int[] a)
//Java 8 新增的并行排序算法,功能和用法和上述相同,数据显示,在对大量数据的排序时,效率要高于经过调优的快速排序算法 sort。
查询功能
static int binarySearch(int[] a, int key)
//使用二分检索法搜索指定的整形数组中是否有指定的值 key,如果存在,则返回该值第一次出现的地方的下标(以 0 为开始),如果不存在,则返回一个负整数 前提是该数组必须按照数字从小到大顺序进行排序
复制功能
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 fromIndex, int toIndex)
//复制指定范围的数组,复制的范围只包括起点不包括终点。参数 to 超过原数组最大下标时用 0 填充,其他类型的数组用对应的值填充
替换功能
static void fill(int[] a, int val)
//将数组 a 中所有元素替换为 val。
static void fill(int[] a, int fromIndex, int toIndex, int val)
//将数组 a 中指定的区间内所有元素替换为 val,替换区间包括起点而不包括终点
转换功能
static <T> List<T> asList(T... a)
//返回由指定数组支持的固定大小的列表。
static String toString(Object[] a)
//返回指定数组的内容的字符串表示形式。
判断功能
static boolean equals(Object[] a,Object[] b)
//比较两个array是否相等。拥有相同元素个数,且所有对应元素两两相等。
查询功能的演示
//数组乱序
int [] arr ={6,9,8,5,7};
//数组从小到大排序
int [] arr1 = {1,2,5,6,7};
//数组从大到小排序
int [] arr2 = {7,6,5,4,3,2};
System.out.println(Arrays.binarySearch(arr,7)); // -2
System.out.println(Arrays.binarySearch(arr1,6)); //3
System.out.println(Arrays.binarySearch(arr1,3)); // -3
/*
由此看出要使用binarySearch方法,必须保证数组按照数字正序进行排序,因为二分法检索时,会先判断key值与数组中间的那个值进行比较,如果key值大,会从中间值的左侧继续搜索,直到找到结果或不能再二分。