JDK8源码之Arrays

  Arrays是一个工具类,包含了各类数组的操做方法,包括排序、搜索、转化,在JDK1.8中新增了一些方法,对原有一些方法的并发性作了加强,极大地提升了原有方法的性能。java

 

一、rangeCheck(int arrayLength, int fromIndex, int toIndex)方法算法

数组下标校验数组

 

二、sort(T[] array, int fromIndex, int toIndex, [Comparator<? super T> c])方法并发

T 数值类型对象函数

c 排序对象,数组排序依据工具

排序方法,采用的算法是双键快排(Dual Pivot QuickSort),比普通的快速排序性能要好的多,时间复杂度O(NlogN)性能

 

三、parallelSort(T[] array, [int fromIndex], [int toIndex])方法ui

排序合并算法,先把数组递归切分红子数组,直到子数组长度等于或者小于最小排序数组长度,子数组排序以后再进行合并,在数据规模达到必定程度,大概是2的18次方,表现出来的性能要高于sort方法spa

 

四、legacyMergeSort方法对象

老旧的排序方法即将在将来被删除

 

五、sort(Object[] array, [int fromIndex], [int toIndex])方法

对象数组升序排序,注意所属对象必须属于同一个类,对象所属类必须实现Comparable接口

 

六、parallelPrefix(T[] array, BinaryOperator<T> op)方法

并行计算,将数组中的每一个元素替换为指定关联操做前缀的积累

如:(1,2,3,4,5)关联操做为加法,则结果返回(1,3,6,10,15)

 

七、binarySearch(T[] array, T key)方法

使用二分查找算法,查询元素,注意数组必须是提早使用sort方法排好序的,而且若是数组包含两个相等的重复元素,返回结果的顺序不保证。

 

八、equals(T[] a, T[] b)方法

两个数组判等,当且仅当两个数组都为空或者两个数组拥有相同的元素和且元素顺序相同两个数组相等,不然不等。

 

九、deepEquals(T[] a, T[] b)方法

该用于多维数组比较,当两个数组都为空或者两个数组元素相等而且当元素中包含数组数组的相应元素也相等则两个数组相等,不然不等

 

 

十、fill(T[] array, [int fromIndex],[int toIndex], T value)方法

在数组array的[fromIndex,toIndex)下标范围插入value

 

十一、copyOf(T[] original, int length)方法

数组拷贝,建立一个指定长度的数组,拷贝源数组,长度比源数组小则截断,比源数组大则多出部分元素用默认值填充

 

十二、copyOfRange(T[] array, int fromIndex, int toIndex)方法

数组部分拷贝

 

1三、asList方法

将数组转化为集合容器List,注意虽然返回对象的类也属于有序集合List,但与java.util.ArrayList并不是同一个类,而是Arrays内部实现的一个基于数组的有序集合List

 

1四、toString方法

数组的字符串表示

 

1五、deepToString方法

数组的字符串表示,当该数组包含数组元素时,递归表示,一般用于表示多维数组

 

1六、setAll(T[] array, IntFunction<? extends T> generator)方法

基于数组下标和计算函数generator生成数组元素

 

1七、parallelSetAll(T[] array, IntFunction<? extends T> generator)方法

做用同上,不过它是并行计算,在必定数据规模下性能要比setAll方法优越

 

1八、spliterator(T[] array, [int fromIndex], [int toIndex])

基于指定数组array和范围返回一个Spliterator对象,基于Spliterator对象可进行数组的分割、遍历等操做

 

1九、stream(T[] array, [int startIndex], [int endIndex])

基于指定数组的范围返回元素相应的Stream

相关文章
相关标签/搜索