Java原生工具类
Objects
requireNotNull()
:为空抛异常,不为空返回本身
deepEquals()
:对象深度相等(数组层面)判断
- 调用
Arrays.deepEquals0()
- 适用于任意深度
- 值得一提的是,java的集合类都覆写了
equals()
方法,对应元素equals()
均为true
时返回true
Arrays
asList()
:将参数作为数组元素,返回数组
deepEquals()
与equals()
:数组对应元素相等判断
equals()
对于对应元素相等的判断调用o.equals()
,而Java中的原生数组并不存在覆写equals()
方法的说法,因此无法达到深度相等的判断。因此,当数组内的元素仍为数组时,仅当对应元素可以用==
判断相等时,Arrays.equals()
才会判定相等。deepEquals()
同样基于Arrays.deepEquals0()
实现,对于对应元素是否相等调用deepEquals0()
判断,形成递归调用,达到判断深度相等的目的。
binarySearch()
:二分查找数组内元素,返回index
- 可指定起始位置
- 可传入
Comparator
- 对于引用类型数组的二分查找,要么元素类型实现了
Comparable
,要么传入Comparator
,后者优先用于比较
copyOf()
:拷贝数组并返回
- 从首位开始拷贝,指定长度与原数组长度取小者作为拷贝长度
- 可以创建原数组元素类型子类的数组,需要传入新的数组类,取元素类型时调用了
getComponentType()
,创建数组时调用了Array.newInstance()
- 调用native方法
System.arraycopy()
copyOfRange()
:指定原数组范围拷贝
- 左闭右开
from
小于0或不小于数组长度时会抛出异常to
大于数组长度时截止到数组长度
fill()
:填充元素
- 可指定首尾
sort()
:元素排序
- 可指定
Comparator
- 可指定首尾
deepToString()
:将数组转化为字符串
- 深度转化,可呈现多维数组形式
deepHashCode()
:根据数组元素深度计算哈希值
result = 31 * result + elementHash
- 选择质数能够降低哈希冲突的概率
- 偶数相当于移位,导致信息丢失(高位)
- 选择不大不小的质数
- 31可被优化:
i*31 = i<<5 - 1
setAll()
:按照位置赋值
- 需要传入一个函数接口对象,实现计算规则
待学习
parallelXxx()
stream()
Collectors
类
System
getenv()
:获取操作系统环境变量或JVM变量的值
getProperty()
,setProperty()
,clearProperty()
:JVM变量
currentTimeMillis()
:获取当前系统时间,以毫秒为单位
GMT 1970.1.1 00:00:00
nanoTime()
:获取与某一时间点之间的时间间隔
- JVM启动时会随机设定这一时间点
- 可能为负数
- 一般用于计算运行时间或作为随机种子