Java容器工具类Arrays

原文地址:奇舞移动技术

前面把 List , Set , Map 的结构梳理了一下,在java的容器体系下,还有两个非常重要的工具类 CollectionsArrays ,本文主要梳理下 Arrays 类提供的方法。

排序

Arrays 提供两种排序: sortparallelSort 。首先看下 sort 相关的函数:

Java容器工具类Arrays

上图展示了
Arrays 提供的各种
sort 函数以及它的重载形式。
sort 可以排序的数组类型包括
int ,
long ,
short ,
char ,
byte ,
float ,
double 一共7种基本数据类型,在8基本类型中,除了
boolean 不能排序,都包含了。
sort 在对7中基本类型进行排序中,还可能会有
int 类型的第二个和第三个参数,分别表示排序开始的下标(包含)和结束的下标(不包含)。
sort 也可以对
Object 类型的数据进行排序,也可以对任意其他类型的数组进行排序,并且可以自定义排序时的
Comparator

Java容器工具类Arrays

当数组元素的数量大于
MIN_ARRAY_SORT_GRAN 时,
parallelSort 会把数组拆分为多个数组,然后对多个数组进行排序,最后将多个数组进行归并,最终得到排序结果。和
sort 方法一样,
parallelSort
boolean 以外的所有基本数据类型,并且支持任意其他类型,也支持自定义
Comparator

二元操作

Java容器工具类Arrays

什么是二元操作,可以看下下面的demo:

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 参数,根据 leftright 参数对数组进行修改,修改完成后将结果写入原数组。二元操作可以对 long , int , double 类型的数组进行操作,也可以对任意其他类型的数组进行操作,而且可以提供数组操作的下标范围。

二分查找

Java容器工具类Arrays

Arrays 可以对除
boolean 的基本类型数据进行二分查找,可以对任意类型的数组进行二分查找,且可以指定二分查找的下标范围。对于非基本类型的数组,可以自定义
Comparator

数据填充

Java容器工具类Arrays

可以使用
fill

接口将数组指定的下标位置的元素设置为指定的值。

拷贝

Java容器工具类Arrays

copyOf 将源数组从下标0开始,拷贝指定数量的元素并返回新的数组;
copyRangeOf

将元素从指定下标范围的元素中拷贝指定数量个元素并返回信的数组。

分割迭代

Java容器工具类Arrays

Spliterator就是为了并行遍历元素而设计的一个迭代器,可以阅读之前的文章

Java迭代器spliterator

Java迭代器spliterator(二)

Stream

Java容器工具类Arrays

对数组进行流式处理,可用一切流式处理的方法,后面会写一篇文章分析
stream

操作

总结

Arrays 主要提供了排序,二元操作,二分查找,数据填充,拷贝,分割迭代,流式处理操作。 文章只是介绍了功能,并没有详细说明,后续会写两篇文章,分别分析分割迭代和流式处理。

原文 

https://juejin.im/post/5cb3e5d05188251b14579b88

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Java容器工具类Arrays

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址