Arrays类中几种常用的方法
Arrays是Java中操作数组的工具类
在使用时需要导入import java.util.Arrays
1.1数组转字符串Arrays.toString(数组)
数组可以是int[] arr;double[] arr;float[] arr;char[] arr;byte[] arr;boolean[] arr;long[] arr;short[] arr;这八种基本数据类型的数组。
将数组的内容转化为字符串的形式,可以有来输出Ststem.out.println(Arrays.toString(指定数组))
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
int[] arr1 = {1,2,3,4,5,6,7,8,9,10};
double[] arr2 = {1.0,2.0,3.0,4.0,5.0,6.0,6.6};
boolean[] arr3 = {true,false};
char[] arr4 = {'h','e','l','l','o'};
long[] arr5 = {1000,2000,3000};
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr2));
System.out.println(Arrays.toString(arr3));
System.out.println(Arrays.toString(arr4));
System.out.println(Arrays.toString(arr5));
/**输出结果为:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 6.6]
[true, false]
[h, e, l, l, o]
[1000, 2000, 3000]*/
}
}
1.2数组拷贝Arrays.copyOf(int[] original, int newLength)
int[] original要复制的数组,int newLength要复制的长度
当然数组拷贝也可以拷贝其他数组类型
int[] arr1 = {1,2,3,4,5,6,7,8,9,10};
int[] arr2 = Arrays.copyOf(arr1,10);//可以选择复制的长度
注意:
(1).newLength参数不能是负数
(2).original不能是null (空)
int[] arr2 = Arrays.copyOf(arr1,-1);//异常:NegativeArraySizeException
int[] arr3 = null;
int[] arr2 = Arrays.copyOf(arr3,10);//异常:NullPointerException
1.3数组排序Arrays.sort()
Arrays.sort(int[] arr)当参数只有一个数组的时候,会将数组的全部内容默认从小到大排序。当然也可以选择性排序,只对数组的一部分内容进行排序,Arrays.sort(int[] arr,int fromIndex,int toIndex),其中fromIndex和toIndex是要排序的开始索引和终止索引
特别的这个区间是一个左闭右开区间——[fromIndex,toIndex),我们可以通过代码来验证:
public static void main(String[] args) {
int[] arr1 = {2, 5, 1, 4, 3, 9, 6, 7, 8, 10};
//formIndex:2
//toIndex:8
Arrays.sort(arr1, 2, 8);
System.out.println(Arrays.toString(arr1));
}
//运行结果:[2, 5, 1, 3, 4, 6, 7, 9, 8, 10]
// 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
1.4二分查找Arrays.binarySearch()
二分查找一个数,前提是这个数组有序,所以在使用Arrays.binarySearch会先将这个数组进行排序(Arrays.sort)
在指定数组中寻找一个数,如果找到了返回这个数的索引,如果没有找到则返回计算机觉得应该所在位置的索引。
public static void main(String[] args) {
int[] arr1 = {2, 5, 1, 4, 3, 9, 6, 7, 8, 10};
int ret = Arrays.binarySearch(arr1,9);
/*
同样的也可以选择查找范围
fromIndex = 1;
toIndex = 8;
key = 9;
int ret = Arrays.binarySearch(arr1,1,8,9);
*/
}
1.5数组填充Arrays.fill()
将数组的全部或部分填充为指定内容
int[] arr = new int[10];
Arrays.fill(arr,99);
System.out.println(Arrays.toString(arr));
//[99, 99, 99, 99, 99, 99, 99, 99, 99, 99]
//fromIndex = 0;
//toIndex = 4;
//[0,4)
Arrays.fill(arr,0,4,66);
System.out.println(Arrays.toString(arr));
//[66, 66, 66, 66, 99, 99, 99, 99, 99, 99]
根据输出结果再次证实toIndex是取不到,左闭右开区间
1.6判断数组是否相同Arrays.equals(int[] arr1,int[] arr2)
规则:
如果两个数组以相同的顺序包含相同的元素,则它们是相等的。返回true,否则返回false
int[] arr1 = {1,2,3,4,5,6,7,8,9,10};
int[] arr2 = {2,1,5,3,4,8,6,7,9,10};
System.out.println(Arrays.equals(arr1,arr2));//false
int[] arr3 = {1,2,3,4,5,6,7,8,9,10};
System.out.println(Arrays.equals(arr1,arr3));//true