- 此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。
- 除非特别注明,否则如果指定数组引用为
null
,则此类中的方法都会抛出NullPointerException
。
Arrays
类中提供的static
方法,直接使用类名调用就可以。
static TYPE[] copyOf(TYPE[] original, int newLength)
static TYPE[] copyOfRange(TYPE[] original, int from, int to)
复制指定的数组,截取或用 false填充(如有必要),以使副本具有指定的长度。
public static void getSort() {
int[] arrOne = {1, 2, 3, 4, 5};
int[] arrTwo = new int[5];
int[] arrThree = new int[10];
// 将arrOne复制到arrTwo
arrTwo = Arrays.copyOf(arrOne, 5);
System.out.println("arrTwo" + Arrays.toString(arrTwo));
/* arrTwo[1, 2, 3, 4, 5] */
// 将arrOne的第3-5位拷贝成一个新数组并赋值给arrThree
arrThree = Arrays.copyOfRange(arrOne, 2, 4);
System.out.println("arrThree" + Arrays.toString(arrThree));
/* arrThree[3, 4] */
}
static int binarySearch(TYPE[] a, TYPE key)
static int binarySearch(TYPE[] a, int fromIndex, int toIndex, TYPE key)
使用二分搜索法来搜索指定的类型型数组的范围,以获得指定的值。r如果查找不到,就返回key可能在的位置的负值-1
public static void search() {
int[] arrOne = {1, 2, 3, 4, 5};
// 查找
int index = Arrays.binarySearch(arrOne, 4);
int index1 = Arrays.binarySearch(arrOne, 7);
System.out.println("4所在位置的索引为:" + index +
",7所在的索引值为:" + index1);
/* 4所在位置的索引为:3,7所在的索引值为:-6 */
}
static boolean equals(TYPE[] a, TYPE[] a2)
如果两个指定的 TYPE 型数组彼此相等,则返回 true。
public static void getEquals() {
int[] arrOne = {1, 2, 3, 4, 5};
int[] arrTwo = {1, 2, 3, 3, 3};
int[] arrThree = {1};
int[] arrFour = {1, 2, 3, 4, 5};
System.out.println("完全相同的两个数组对比:" +
Arrays.equals(arrOne, arrFour));
System.out.println("length相同元素不同的对比:" +
Arrays.equals(arrOne, arrTwo));
System.out.println("length不同,元素也不同:" +
Arrays.equals(arrOne, arrThree));
/*
* 完全相同的两个数组对比:true
* length相同元素不同的对比:false
* length不同,元素也不同:false
*/
}
static void fill(TYPE[] a, TYPE val)
static void fill(TYPE[] a, int fromIndex, int toIndex, TYPE val)
将指定的 TYPE 值分配给指定 TYPE 型数组指定范围中的每个元素。
public static void getFill() {
int[] arrOne = {1, 2, 3, 4, 5};
int[] arrTwo = {1, 2, 3, 4, 5};
// arrOne全部填充;arrTwo下标为1-3位的填充
Arrays.fill(arrOne, 0);
Arrays.fill(arrTwo, 1, 3, 0);
System.out.println("填充后的arrOne:" + Arrays.toString(arrOne));
System.out.println("填充后的arrTwo:" + Arrays.toString(arrTwo));
/*
* 填充后的arrOne:[0, 0, 0, 0, 0]
* 填充后的arrTwo:[1, 0, 0, 4, 5]
*/
static String toString(TYPE[] a)
返回指定数组内容的字符串表示形式。
static void sort(TYPE[] a)
对指定的 TYPE 型数组按数字升序进行排序。
public static void getSort1() {
int[] arrOne = {2, 4, 763, 12, 34, 1213, 87};
System.out.println("排序前的数组:" + Arrays.toString(arrOne));
// 排序
Arrays.sort(arrOne);
System.out.println("排序后的数组:" + Arrays.toString(arrOne));
/*
* 排序前的数组:[2, 4, 763, 12, 34, 1213, 87]
* 排序后的数组:[2, 4, 12, 34, 87, 763, 1213]
*/
}
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
// arraycopy()方法
int[] one = {1,2,3,4,5};
int[] two = {6,7,8};
System.arraycopy(two, 1, one, 3, 2);
System.out.println(Arrays.toString(one));
System.out.println(Arrays.toString(two));
/*
* [1, 2, 3, 7, 8] [6, 7, 8]
*/
- 在
Arrays
类提供的方法中,有一个原则是包头不包尾。如fromIndex=1
,toIndex=4
,要操作的元素下标为1,2,3
,而4
是不包含在内的,简单来记就是说toIndex-fromIndex
的值就是会操作的元素个数。- 现在新增的带有deep的两个方法是用来操作多维数组的。
原文:https://www.cnblogs.com/torain/p/12814711.html