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

【Java】工具类 -- 持续更新的更多相关文章

  1. Android中常用开发工具类—持续更新...

    一.自定义ActionBar public class ActionBarTool { public static void setActionBarLayout(Activity act,Conte ...

  2. Java 类型转换工具类(持续更新)

    简介 将项目中用到的类型转换做个记录. 详细代码 @Component public class TypeUtil { // [start]字符串转各种格式 // 字符串转日期(格式:"yy ...

  3. 超级实用的 Java 工具类

    超级实用的 Java 工具类 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取 ...

  4. java工具类系列 (四.SerializationUtils)

    java工具类系列 (四.SerializationUtils) SerializationUtils该类为序列化工具类,也是lang包下的工具,主要用于序列化操作 import java.io.Se ...

  5. Java工具类——通过配置XML验证Map

    Java工具类--通过配置XML验证Map 背景 在JavaWeb项目中,接收前端过来的参数时通常是使用我们的实体类进行接收的.但是呢,我们不能去决定已经搭建好的框架是怎么样的,在我接触的框架中有一种 ...

  6. 排名前 16 的 Java 工具类

    在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...

  7. 排名前16的Java工具类

    原文:https://www.jianshu.com/p/9e937d178203 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法 ...

  8. 第一章 Java工具类目录

    在这一系列博客中,主要是记录在实际开发中会常用的一些Java工具类,方便后续开发中使用. 以下的目录会随着后边具体工具类的添加而改变. 浮点数精确计算 第二章 Java浮点数精确计算 crc32将任意 ...

  9. java工具类之按对象中某属性排序

    import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang ...

  10. 干货:排名前16的Java工具类

    在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...

随机推荐

  1. DeepSpeed Chat: 一键式RLHF训练,让你的类ChatGPT千亿大模型提速省钱15倍

    DeepSpeed Chat: 一键式RLHF训练,让你的类ChatGPT千亿大模型提速省钱15倍 1. 概述 近日来,ChatGPT及类似模型引发了人工智能(AI)领域的一场风潮. 这场风潮对数字世 ...

  2. java跨越解决

    1.配置文件解决跨域 使用Filter方式进行设置 @Slf4j @Component public class CorsFilter implements Filter { @Override pu ...

  3. 基于 Rainbond 的混合云管理解决方案

    内容概要:文章探讨了混合云场景中的难点.要点,以及Rainbond平台在跨云平台的混合云管理方面的解决方案.包括通过通过统一控制台对多集群中的容器进行编排和管理,实现了对混合云中应用的一致性管理.文章 ...

  4. 2020-09-23:TCP头部信息有哪些?

    福哥答案2020-09-23:#福大大架构师每日一题# 福哥口诀法:T源目序缺首保 紧确推和复同终 窗校紧选数(TCP格式:源端口,目的端口,序号,确认号,首部长度,保留,紧急位URG,确认位ACK, ...

  5. 2021-03-23:给定一个正整数组成的无序数组arr,给定一个正整数值K,找到arr的所有子数组里,哪个子数组的累加和等于K并且是长度最大的。返回其长度。

    2021-03-23:给定一个正整数组成的无序数组arr,给定一个正整数值K,找到arr的所有子数组里,哪个子数组的累加和等于K并且是长度最大的.返回其长度. 福大大 答案2021-03-23: 双指 ...

  6. 2022-02-15:扫地机器人。 房间(用格栅表示)中有一个扫地机器人。 格栅中的每一个格子有空和障碍物两种可能。 扫地机器人提供4个API,可以向前进,向左转或者向右转。每次转弯90度。 当扫地机

    2022-02-15:扫地机器人. 房间(用格栅表示)中有一个扫地机器人. 格栅中的每一个格子有空和障碍物两种可能. 扫地机器人提供4个API,可以向前进,向左转或者向右转.每次转弯90度. 当扫地机 ...

  7. 2021-08-01:如果只给定一个二叉树前序遍历数组pre和中序遍历数组in,能否不重建树,而直接生成这个二叉树的后序数组并返回。已知二叉树中没有重复值。

    2021-08-01:如果只给定一个二叉树前序遍历数组pre和中序遍历数组in,能否不重建树,而直接生成这个二叉树的后序数组并返回.已知二叉树中没有重复值. 福大大 答案2021-08-01: 先序遍 ...

  8. KubeCon EU 2023 落幕,哪些技术趋势值得关注?

    KubeCon+CloudNativeCon 是云原生领域的技术盛会,上个月月末,在荷兰阿姆斯特丹举办的欧洲 KubeCon+CloudNativeCon 刚刚落下帷幕,此次大会吸引了10000多名参 ...

  9. 分库分表的 21 条法则,hold 住!

    大家好,我是小富- (一)好好的系统,为什么要分库分表? 本文是<分库分表ShardingSphere5.x原理与实战>系列的第二篇文章,距离上一篇文章已经过去好久了,惭愧惭愧- 还是不着 ...

  10. SICP:元循环求值器(Python实现)

    求值器完整实现代码我已经上传到了GitHub仓库:TinySCM,感兴趣的童鞋可以前往查看.这里顺便强烈推荐UC Berkeley的同名课程CS 61A. 在这个层次结构的最底层是对象语言.对象语言只 ...