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

1、rangeCheck(int arrayLength, int fromIndex, int toIndex)方法

数组下标校验

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

T 数值类型对象

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

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

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

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

4、legacyMergeSort方法

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

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

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

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

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

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

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

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

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

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

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

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

 

 

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

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

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

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

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

数组部分拷贝

13、asList方法

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

14、toString方法

数组的字符串表示

15、deepToString方法

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

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

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

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

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

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

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

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

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

 

最新文章

  1. Servlet开发详解
  2. [Android] 深入浅出Android App耗电量统计
  3. 解决客户端访问https报错
  4. .Net 配置文件——继承ConfigurationSection实现自定义处理类处理自定义配置节点
  5. 【JavaEE】SSH+Spring Security+Spring oauth2整合及example
  6. ural 1156. Two Rounds
  7. mysql批量修改表引擎
  8. hibernate动态创建数据库表名几种方式
  9. linux(centos)搭建svn
  10. Sqlserver in 实现 参数化查询 XML类型
  11. NSStringDrawingOptions
  12. 详解Java API之正则表达式
  13. 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——收流篇:(一)简介
  14. 性能测试监控:Jmeter +InfluxDB +collectd +Grafana
  15. C#中的String类
  16. centos 7 linux系统安装 mysql5.7.17(glibc版)
  17. loadrunner&#160;场景设计-学习笔记之性能误区
  18. ALGO-120_蓝桥杯_算法训练_学做菜
  19. 建库,建表,添加数据 SQL命令
  20. sqoop 常用命令整理(二)

热门文章

  1. 新手如何学习python(python学习路线图)
  2. 外网访问ARM嵌入式Linux系统
  3. 面向对象select方法
  4. 为什么notify(), wait()等函数定义在Object中,而不是Thread中
  5. Python if条件判断
  6. Springboot 上传excel并解析文件内容
  7. JDK命令行工具
  8. JavaScript-DOM(2)
  9. 线上问题排查(2)——JDK内置工具
  10. 数组toString()方法,数组常用操作