资源描述:
《java.util.arrays类详解(源码总结).doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、java.util.Arrays类详解(源码总结)概述Arrays类位于java.util包下,是一个对数组操作的工具类。今天详细的看了看Arrays类的4千多行源码,现将Arrays类中的方法做一个总结(JDK版本:1.6.0_34)。Arrays类中的方法可以分为八类:·sort(对数组排序)·binarySearch(二分法查找数组中的元素)·equals(比较两个数组是否相等)·fill(对数组中的指定位置填充相同的内容)·copyOf(数组拷贝)·asList(将数组转换为一个固定的List对象)·hashCode(计算数组的
2、哈希值)·toString(以特定格式输出数组)举例说明说明:以下的代码均为摘抄的java.util.Arrays类中的源码,注释为本人所加。sort//对数组a进行排序publicstaticvoidsort(long[]a){sort1(a,0,a.length);}//对数组a中的从fromIndex(包含)至toIndex(不包含)的值进行排序publicstaticvoidsort(long[]a,intfromIndex,inttoIndex){rangeCheck(a.length,fromIndex,toIndex);s
3、ort1(a,fromIndex,toIndex-fromIndex);}/**对基本类型数组的排序有以上两种方法,这里只摘出了long类型的。sort1方法篇幅原因没有摘出来,在sort1方法中使用的是经过调优的快速排序算法(tunedquicksort)。**/..............................//对对象类型进行排序publicstaticvoidsort(Object[]a){Object[]aux=(Object[])a.clone();mergeSort(aux,a,0,a.length,0);}//
4、对对象a中的从fromIndex(包含)至toIndex(不包含)的值进行排序publicstaticvoidsort(Object[]a,intfromIndex,inttoIndex){rangeCheck(a.length,fromIndex,toIndex);Object[]aux=copyOfRange(a,fromIndex,toIndex);mergeSort(aux,a,fromIndex,toIndex,-fromIndex);}/**对对象类型数组的排序有以上两种方法,在mergeSort方法中使用的是经过修改的归并
5、排序算法(modifiedmergesort)。**/binarySearchpublicstaticintbinarySearch(long[]a,longkey){returnbinarySearch0(a,0,a.length,key);}publicstaticintbinarySearch(long[]a,intfromIndex,inttoIndex,longkey){rangeCheck(a.length,fromIndex,toIndex);returnbinarySearch0(a,fromIndex,toIndex,
6、key);}/**对数组中元素的查找有以上两种方法,在binarySearch0方法中使用的是二分查找法。并且对基本类型和对象类型的数组查找是同样的操作。**/equals//比较基本类型数组是否相等publicstaticbooleanequals(long[]a,long[]a2){if(a==a2)returntrue;if(a==null
7、
8、a2==null)returnfalse;intlength=a.length;if(a2.length!=length)returnfalse;for(inti=0;i9、+)if(a[i]!=a2[i])returnfalse;/**对于double类型,使用的是:if(Double.doubleToLongBits(a[i])!=Double.doubleToLongBits(a2[i]))returnfalse;对于float类型,使用的是:if(Float.floatToIntBits(a[i])!=Float.floatToIntBits(a2[i]))returnfalse;这样做是为了精确比较。**/returntrue;}...............//比较Object类型数组是否相等p
10、ublicstaticbooleanequals(Object[]a,Object[]a2){if(a==a2)returntrue;if(a==null
11、
12、a2==null)returnfalse;int