java.util.arrays类详解(源码总结).doc

java.util.arrays类详解(源码总结).doc

ID:50530598

大小:59.00 KB

页数:22页

时间:2020-03-10

java.util.arrays类详解(源码总结).doc_第1页
java.util.arrays类详解(源码总结).doc_第2页
java.util.arrays类详解(源码总结).doc_第3页
java.util.arrays类详解(源码总结).doc_第4页
java.util.arrays类详解(源码总结).doc_第5页
资源描述:

《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;i

9、+)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

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。