贾鸿硕的博客

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  18 随笔 :: 0 文章 :: 0 评论 :: 3274 阅读

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启动时会随机设定这一时间点
  • 可能为负数
  • 一般用于计算运行时间或作为随机种子

第三方工具类

org.springframework.util.ObjectUtils

org.apache.commons.lang3.StringUtils

com.google.common.base.MoreObjects

com.google.common.collect.Lists

posted on   jhsss  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示