原文地址:奇舞移动技术java
前面把List
, Set
, Map
的结构梳理了一下,在java的容器体系下,还有两个很是重要的工具类Collections
,Arrays
,本文主要梳理下Arrays
类提供的方法。数组
Arrays
提供两种排序:sort
和parallelSort
。首先看下sort
相关的函数: 微信
Arrays
提供的各类
sort
函数以及它的重载形式。
sort
能够排序的数组类型包括
int
,
long
,
short
,
char
,
byte
,
float
,
double
一共7种基本数据类型,在8基本类型中,除了
boolean
不能排序,都包含了。
sort
在对7中基本类型进行排序中,还可能会有
int
类型的第二个和第三个参数,分别表示排序开始的下标(包含)和结束的下标(不包含)。
sort
也能够对
Object
类型的数据进行排序,也能够对任意其余类型的数组进行排序,而且能够自定义排序时的
Comparator
。
MIN_ARRAY_SORT_GRAN
时,
parallelSort
会把数组拆分为多个数组,而后对多个数组进行排序,最后将多个数组进行归并,最终获得排序结果。和
sort
方法同样,
parallelSort
除
boolean
之外的全部基本数据类型,而且支持任意其余类型,也支持自定义
Comparator
。
int [] arr = new int [] {1,2,3,4,5,6};
Arrays.parallelPrefix(arr, new IntBinaryOperator() {
@Override
public int applyAsInt(int left, int right) {
// TODO Auto-generated method stub
System.out.println(left + "-" + right);
return left + right;
}
});
System.out.println(Arrays.toString(arr));
1-2
3-3
6-4
10-5
15-6
[1, 3, 6, 10, 15, 21]
复制代码
能够看到parallelPrefix
提供了IntBinarryOperator
接口接口的applyAsInt
提供了left
, right
参数,根据left
和right
参数对数组进行修改,修改完成后将结果写入原数组。二元操做能够对long
, int
, double
类型的数组进行操做,也能够对任意其余类型的数组进行操做,并且能够提供数组操做的下标范围。app
Arrays
能够对除
boolean
的基本类型数据进行二分查找,能够对任意类型的数组进行二分查找,且能够指定二分查找的下标范围。对于非基本类型的数组,能够自定义
Comparator
fill
接口将数组指定的下标位置的元素设置为指定的值。
copyOf
将源数组从下标0开始,拷贝指定数量的元素并返回新的数组;
copyRangeOf
将元素从指定下标范围的元素中拷贝指定数量个元素并返回信的数组。
stream
操做
Arrays
主要提供了排序,二元操做,二分查找,数据填充,拷贝,分割迭代,流式处理操做。 文章只是介绍了功能,并无详细说明,后续会写两篇文章,分别分析分割迭代和流式处理。ide