Arrays类位于Java.util包下,是一个对数组操作的工具类,现将Arrays类中的方法做一个总结(JDK版本:1.6.0_34)。Arrays类中的方法可以分为八类:
sort(对数组排序)
binarySearch(二分法查找数组中的元素)
equals(比较两个数组是否相等)
fill(对数组中的指定位置填充相同的内容)
copyOf(数组拷贝)
asList(将数组转换为一个固定的List对象)
hashCode(计算数组的哈希值)
toString(以特定格式输出数组)
(1)简单例子示范
1.array转化为List ,利用java.util.Arrays中的asList方法
Integer []arr = {1,2,3};
System.out.println(arr);
List list = Arrays.asList(arr);
System.out.println(list);
输出结果:
[Ljava.lang.Integer;@659e0bfd
[1, 2, 3]
2.array的排序问题,利用java.util.Arrays中的sort方法排序
Integer a[]={1,5,3,8,4};
Arrays.sort(a);//实现了对数组从小到大的排序
List aList = Arrays.asList(a);
System.out.println(Arrays.asList(aList));
3.数组元素的定位查找,返回数组的下标
使用java.util.Arrays中的binarySearch方法搜索该值的下标
int find;
int b[]={1,5,3,8,4};
find=Arrays.binarySearch(b , 8);
System.out.println(find);
输出:3
4.打印数组array的数值
int c[]={1,5,3,8,4};
String aString =Arrays.toString(c);//String 前的a和括号中的a均表示数组名称
System.out.println(aString);//String 前的a表示数组名称
输出:[1, 5, 3, 8, 4]
5.查看数组中是否包含特定的值,使用java.util.Arrays的array的转化为List的方法,然后使用list中的contains方法
int a[]={1,5,3,8,4}; boolean b=Arrays.asList(a).contains(1); System.out.println(b);//注意:b的值只可能是true或false
输出:true
(2)方法的通用写法示范
说明:以下的代码均为摘抄的java.util.Arrays类中的源码,注释为本人所加。
sort
//对数组a进行排序
public static void sort(long[] a) {
sort1(a, 0, a.length);
}
//对数组a中的从fromIndex(包含)至toIndex(不包含)的值进行排序
public static void sort(long[] a, int fromIndex, int toIndex) {
rangeCheck(a.length, fromIndex, toIndex);
sort1(a, fromIndex, toIndex-fromIndex);
}
/**
对基本类型数组的排序有以上两种方法,这里只摘出了long类型的。sort1方法篇幅原因没有摘出来,在sort1方法中使用的是经过调优的快速排序算法(tuned quicksort)。
**/
……….
……….
……….
//对对象类型进行排序
public static void sort(Object[] a) {
Object[] aux = (Object[])a.clone();
mergeSort(aux, a, 0, a.length, 0);
}
//对对象a中的从fromIndex(包含)至toIndex(不包含)的值进行排序
public static void sort(Object[] a, int fromIndex, int toIndex) {
rangeCheck(a.length, fromIndex, toIndex);
Object[] aux = copyOfRange(a, fromIndex, toIndex);
mergeSort(aux, a, fromIndex, toIndex, -fromIndex);
}
/**
对对象类型数组的排序有以上两种方法,在mergeSort方法中使用的是经过修改的归并排序算法(modified mergesort)。
**/