首页 > 编程语言 >【Java】工具类 -- 持续更新

【Java】工具类 -- 持续更新

时间:2023-06-02 16:44:22浏览次数:40  
标签:调用 Java -- 元素 equals 更新 相等 数组

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,--,元素,equals,更新,相等,数组
From: https://www.cnblogs.com/hsjia/p/17451792.html

相关文章

  • 斯坦福大学李飞飞团队新作:孪生掩码自编码器SiamMAE,刷榜视觉自监督方法
    前言 只需一个简单操作扩展MAE,即可实现自监督学习新sota!本文转载自新智元仅用于学术分享,若侵权请联系删除欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。CV各大方向专栏与各个部署框架最全教程整理【CV技术指南】CV全栈指......
  • 装饰器补充(算法)
    算法之二分法就是将一个列表或(其他容器)里面的数排列组合,将要找里面的数的时候从中间切分比较留半,然后再重复,最终至找到或者最后切分为空1x=[11,2,3,44,55,66,77,88,99,100,23,34,45,56,67]2x.sort()3defbijiao(l):4iflen(l)==0:5......
  • JDK下载国内镜像
    目录一、镜像地址 二、下载指定版本三、注意项一、镜像地址 Indexofjava-local/jdkhttps://repo.huaweicloud.com/java/jdk/二、下载指定版本建议版本Java8u162+,因为如果使用微信相关的SDK的话,对低版本不友好。 三、注意项这里要注意一点,否则你会发现你的jdk里没有jreexe安装......
  • 可持续发展的企业数智化底座究竟是什么样的?
    数智化时代,数据已成为新的生产要素,数据分析、数智员工、产业互联等应用场景正发挥越来越重要的作用。作为可持续发展的企业数智化底座,用友iuap推出可组装式数据分析、数智员工、连接集成服务平台三大创新业务,帮助行业企业构建面向行业应用的组装式数据分析、实现企业多业务场景落地......
  • Qt第六十章:快速引入资源文件
    目录一、在项目中新建文件夹images二、下载资源文件三、将下载的资源文件放到images文件夹中四、在images文件夹中新建文件resources.qrc文件五、resources.qrc转换成resources_rc.py六、使用资源文件一、在项目中新建文件夹images二、下载资源文件iconfont-阿里巴巴矢量图标库icon......
  • WebStorm前端启动JetLinks 物联网基础平台(2.x)
    目录一、环境准备二、下载源码三、安装依赖四、修改配置五、启动项目六、访问项目一、环境准备1.降级node版本为12.22.0使用node版本管理器gnvm_苍穹之跃的博客-以管理员身份打开cmd,cd到node安装目录。2.降级npm版本为[email protected]二、下载源码jetlinks-ui-antd:......
  • IDE后端启动JetLinks 物联网基础平台(2.x)
    目录一、官网二、文档中心三、下载源码四、安装依赖五、IDE配置六、修改配置文件:jetlinks-standalone/src/main/resources/application.yml七、启动项目(项目会自动建表) 一、官网JetLinkshttps://www.jetlinks.cn/#/二、文档中心JetLinks物联网基础平台(2.x)http://doc.jetlinks.cn/......
  • LangChain入门(三)-对超长文本进行总结
    GitHub-liaokongVFX/LangChain-Chinese-Getting-Started-Guide:LangChain的中文入门教程LangChain的中文入门教程.ContributetoliaokongVFX/LangChain-Chinese-Getting-Started-GuidedevelopmentbycreatinganaccountonGitHub.https://github.com/liaokongVFX/LangCh......
  • LangChain入门(一)访问LLM模型
    GitHub-liaokongVFX/LangChain-Chinese-Getting-Started-Guide:LangChain的中文入门教程LangChain的中文入门教程.ContributetoliaokongVFX/LangChain-Chinese-Getting-Started-GuidedevelopmentbycreatinganaccountonGitHub.https://github.com/liaokongVFX/LangCh......
  • LangChain入门(二)-通过 Google 搜索并返回答案
    GitHub-liaokongVFX/LangChain-Chinese-Getting-Started-Guide:LangChain的中文入门教程LangChain的中文入门教程.ContributetoliaokongVFX/LangChain-Chinese-Getting-Started-GuidedevelopmentbycreatinganaccountonGitHub.https://github.com/liaokongVFX/LangCh......