【Java】工具类 -- 持续更新
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】工具类 -- 持续更新的更多相关文章
- Android中常用开发工具类—持续更新...
一.自定义ActionBar public class ActionBarTool { public static void setActionBarLayout(Activity act,Conte ...
- Java 类型转换工具类(持续更新)
简介 将项目中用到的类型转换做个记录. 详细代码 @Component public class TypeUtil { // [start]字符串转各种格式 // 字符串转日期(格式:"yy ...
- 超级实用的 Java 工具类
超级实用的 Java 工具类 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取 ...
- java工具类系列 (四.SerializationUtils)
java工具类系列 (四.SerializationUtils) SerializationUtils该类为序列化工具类,也是lang包下的工具,主要用于序列化操作 import java.io.Se ...
- Java工具类——通过配置XML验证Map
Java工具类--通过配置XML验证Map 背景 在JavaWeb项目中,接收前端过来的参数时通常是使用我们的实体类进行接收的.但是呢,我们不能去决定已经搭建好的框架是怎么样的,在我接触的框架中有一种 ...
- 排名前 16 的 Java 工具类
在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...
- 排名前16的Java工具类
原文:https://www.jianshu.com/p/9e937d178203 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法 ...
- 第一章 Java工具类目录
在这一系列博客中,主要是记录在实际开发中会常用的一些Java工具类,方便后续开发中使用. 以下的目录会随着后边具体工具类的添加而改变. 浮点数精确计算 第二章 Java浮点数精确计算 crc32将任意 ...
- java工具类之按对象中某属性排序
import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang ...
- 干货:排名前16的Java工具类
在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...
随机推荐
- Spring源码系列:初探底层,手写Spring
前言 在学习Spring框架源码时,记住一句话:源码并不难,只需要给你各种业务场景或者项目经理,你也能实现自己的Spring.虽然你的实现可能无法与开源团队相媲美,但是你肯定可以实现一个0.0.1版本 ...
- docker安装python+nginx
一个容器安装python和nginx dockerfile FROM centos:7.9.2009 USER root RUN yum install gcc openssl-devel bzip2 ...
- ChatGPT研究报告:AIGC带来新一轮范式转移
以ChatGPT为代表的AIGC(人工智能生成内容)将成为新一轮范式转移的开始. 本文约4000字,目标是快速建立AIGC知识体系,含有大量的计算专业名词,建议阅读同时扩展搜索. 一.行业现状 1.概 ...
- YOLO3论文中文版
文章目录 YOLO3论文中文版 摘要 1.引言 2. 解决方案 2.1 边界框预测 2.2 类预测 2.3 多尺度预测 2.4 特征提取器 2.5 训练 3.我们的做法 4. 失败的尝试 5.这一切意 ...
- 第一章:PyTorch 入门
第一章:PyTorch 入门 1.1 Pytorch 简介 1.1.1 PyTorch的由来 1.1.2 Torch是什么? 1.1.3 重新介绍 PyTorch 1.1.4 对比PyTorch和Te ...
- go测试库之apitest
前言 使用go语言做开发差不多快一年了,主要用来写后端Web服务,从一开始吐槽他的结构体,比如创建个复杂的JSON格式数据,那是相当的痛苦.还有 err 处理写的巨麻烦. 当然,go 也有爽的地方,创 ...
- 工作中,我们经常用到哪些SQL语句呢?
目录 一.DDL部分(create.drop.alter) 1.1 create 语句上 1.2 drop 语句 1.3 alter 语句 二.DML(数据操纵语言)和DQL(数据查询语言) 2.1 ...
- 2023-01-14:给定一个二维数组map,代表一个餐厅,其中只有0、1两种值 map[i][j] == 0 表示(i,j)位置是空座 map[i][j] == 1 表示(i,j)位置坐了人 根据防
2023-01-14:给定一个二维数组map,代表一个餐厅,其中只有0.1两种值 map[i][j] == 0 表示(i,j)位置是空座 map[i][j] == 1 表示(i,j)位置坐了人 根据防 ...
- 2021-11-19:[0,4,7] : 0表示这里石头没有颜色,如果变红代价是4,如果变蓝代价是7,[1,X,X] : 1表示这里石头已经是红,而且不能改颜色,所以后两个数X无意义,[2,X,X]
2021-11-19:[0,4,7] : 0表示这里石头没有颜色,如果变红代价是4,如果变蓝代价是7,[1,X,X] : 1表示这里石头已经是红,而且不能改颜色,所以后两个数X无意义,[2,X,X] ...
- vue全家桶进阶之路35:Vue3 传递参数query和params
在 Vue.js 3.x 中,可以通过路由的 params 和 query 属性来传递参数. 通过 params 传递参数 我们可以在路由跳转时通过 params 传递参数.具体方法如下: // 在组 ...