Java容器工具类Arrays
原文地址:奇舞移动技术
前面把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
。
二元操作
什么是二元操作,可以看下下面的demo:
int [] arr = new int [] {1,2,3,4,5,6};
Arrays.parallelPrefix(arr, new IntBinaryOperator() {@Overridepublic int applyAsInt(int left, int right) {// TODO Auto-generated method stubSystem.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
类型的数组进行操作,也可以对任意其他类型的数组进行操作,而且可以提供数组操作的下标范围。
二分查找
Arrays
可以对除boolean
的基本类型数据进行二分查找,可以对任意类型的数组进行二分查找,且可以指定二分查找的下标范围。对于非基本类型的数组,可以自定义Comparator
数据填充
可以使用fill
接口将数组指定的下标位置的元素设置为指定的值。
拷贝
copyOf
将源数组从下标0开始,拷贝指定数量的元素并返回新的数组;copyRangeOf
将元素从指定下标范围的元素中拷贝指定数量个元素并返回信的数组。
分割迭代
Spliterator就是为了并行遍历元素而设计的一个迭代器,可以阅读之前的文章
Java迭代器spliterator
Java迭代器spliterator(二)
Stream
对数组进行流式处理,可用一切流式处理的方法,后面会写一篇文章分析stream
操作
总结
Arrays
主要提供了排序,二元操作,二分查找,数据填充,拷贝,分割迭代,流式处理操作。 文章只是介绍了功能,并没有详细说明,后续会写两篇文章,分别分析分割迭代和流式处理。
关注微信公众号,最新技术干货实时推送
转载于:https://juejin.im/post/5cb3e5d05188251b14579b88
Java容器工具类Arrays相关推荐
- Java学习笔记七——数组工具类Arrays
数组工具类Arrays Java提供的Arrays类里包含的一些static修饰的方法可以直接操作数组.若将里面的方法用熟的话,那开发效率会大大提高.下面介绍其中的方法. List<T> ...
- 第21天学习Java的笔记-数学工具类Arrays,Math
27天! 数学工具类 1.1数组工具类Arrays package Demo2101;/* 注意事项:是Arrays进行调用,不是变量进行调用!!!* java.util.Arrays是一个与数组相关 ...
- java arrays方法_Java工具类Arrays中不得不知的常用方法
原标题:Java工具类Arrays中不得不知的常用方法 Arrays 数组操作集数组转List ---asList 这个被"普遍"称为数组转List的方法,可能是Arrays内大家 ...
- Java学习(静态static关键字,数组工具类Arrays,数学相关工具类(绝对值,向上取整,向下取整),继承,super和this关键字,抽象)
2022/1/2 (1/6)Java学习 1.静态Static关键字概述 一旦用了static关键字,那么这样的内容不再属于对象自己,而是属于类的,所以凡是本类的对象,都共享同一份. 2.静态stat ...
- java常用工具类和Hutool常用的工具类整理
java常用工具类和Hutool常用的工具类整理 1.java常用工具类 1.1 Scanner类 /*** Scanner 类*/@Testpublic void testScanner() {Sc ...
- Hutool Java常用工具类汇总
简介 Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以"甜甜的". Hu ...
- UrlUtils工具类,Java URL工具类,Java URL链接工具类
UrlUtils工具类,Java URL工具类,Java URL链接工具类 >>>>>>>>>>>>>>>&g ...
- Java并发工具类(闭锁CountDownLatch)
并发工具类系列: Java并发工具类(闭锁CountDownLatch) Java并发工具类(栅栏CyclicBarrier) Java并发工具类(信号量Semaphore) 闭锁是一种同步工具类,可 ...
- java日期工具类DateUtil
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. DateUtil类 [java] view plain copy package com.util; ...
- Java常用工具类StringUtils的常用方法
Java常用工具类StringUtils的常用方法 1.该工具类是用于操作Java.lang.String类的. 2.StringUtils类在操作字符串是安全的,不会报空指针异常,也正因此,在操作字 ...
最新文章
- sublime按ctrl+B不能运行
- mysql表空间权限_MySQL InnoDB表空间加密示例详解
- linux内核mtd分区,linux-kernel – 在运行时调整MTD分区大小
- jQuery -- 目录
- 腾讯2014年实习生招聘笔试面试经历
- PyQt5和Python的多线程
- 5行Python代码实现刷爆全网的动态条形图!
- 跨平台通信中间件thrift学习【Java版本】(转)
- SQL-基础学习4--聚集函数:AVG(),COUNT(),MAX(),MIN(),SUM();聚集不同值:DISTINCT
- 京瓷1020手动双面打印提示_解决京瓷2201复印机不能双面打印问题
- linux centeros 操作系统
- 【前端——补充学习】解决emos项目报错、路由、组件
- 开源demo| 你画我猜——让你的生活更有趣
- 读书笔记010:《伤寒论》- 足少阴肾经
- android x86 remix,Remix系统X86版
- 下载:简体中文版Live Messenger 8.1 Beta
- matlab将图片旋转的代码_空间曲线绕空间直线旋转生成的旋转曲面方程
- 【密码资料】纳瓦霍密码
- 《小狗钱钱》--chapter3.4.5--挖掘需求、排除干扰
- 1483. 纪念品分组 输出好忧桑…………