hutool 工具类提高编码效率

hutool 工具类

hutool 依赖

引入 hutool 依赖包。

<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.6</version>
</dependency>

StrUtil 常用方法:

  • StrUtil.equals:
String num = "2";
if (StrUtil.equals("2", num)) {System.out.println(num);
}

NumberUtil 数字工具类:

  • NumberUtil.isNumber 是否为数字

  • NumberUtil.isInteger 是否为整数

  • NumberUtil.isDouble 是否为浮点数

  • NumberUtil.add 针对数字类型做加法

public static void add() {BigDecimal bigDecimal1 = BigDecimal.valueOf(1.23);BigDecimal bigDecimal2 = BigDecimal.valueOf(1.22);BigDecimal bigDecimal = NumberUtil.add(bigDecimal1, bigDecimal2);System.out.println(bigDecimal);
}
  • NumberUtil.sub 针对数字类型做减法

  • NumberUtil.mul 针对数字类型做乘法

  • NumberUtil.div 针对数字类型做除法

  • 比较 BigDecimal :

BigDecimal bigDecimal1 = BigDecimal.valueOf(1.23);
BigDecimal bigDecimal2 = BigDecimal.valueOf(1.22);boolean isGreater = NumberUtil.isGreater(bigDecimal1, bigDecimal2);
System.out.println(isGreater);

类型转换 常用方法:

  • 转换为整型数组:
  String[] b = { "1", "2", "3", "4" };Integer[] intArray = Convert.toIntArray(b);System.out.println(JSON.toJSONString(intArray));
  • 数组转化为list:
  String[] strArr = {"a", "b", "c", "d"};List<String> strList = Convert.toList(String.class, strArr);System.out.println(strList);  

CollUtil 集合工具类:

  • CollUtil.findOne: 查找符合条件的一条数据
List<String> list = Arrays.asList("2","3");
String str = CollUtil.findOne(list, num -> StrUtil.equals("2", num));
  • CollUtil.get:根据下标,查找list中的数据:
  List<String> list = Arrays.asList("1","2","3","4");String str = CollUtil.get(list, 0);System.out.println(str);
  • CollUtil.addAll:往集合中添加另一个集合的数据
    自带null的判断,不需要再重复判断
  List<String> list = Arrays.asList("1","2","3","4");List<String> list2 = null;  CollUtil.addAll(list, list2);list.forEach(System.out::println);
  • CollUtil.page:分页。
    pageNo:页码,从0开始计数,0表示第一页
    pageSize:每页的条目数
  List<String> list = Arrays.asList("1","2","3","4");List<String> pageList = CollUtil.page(0, 2, list);pageList.forEach(System.out::println);

DateUtil 日期工具类:

  • DateTime
    DateUtil 日期工具类,返回的大部分日期都是 DateTime的。
    hutool的 DateTime继承了 Date,所以可以用 Date 声明。
    此类重写了父类的 toString()方法,返回值为"yyyy-MM-dd HH:mm:ss"格式。

  • 字符串转日期:

  String dateStr = "2023-03-01";Date date = DateUtil.parse(dateStr);System.out.println(date);
  • 字符串转日期。按指定格式:
  String dateStr = "2023-03-01 01:21:32";Date date = DateUtil.parse(dateStr, "yyyy-MM-dd hh:mm:ss");System.out.println(date);
  • 日期转字符串。按指定格式:
  Date date = new Date();String dateStr = DateUtil.format(date, "yyyy-MM-dd hh:mm:ss");System.out.println(dateStr);
  • 当月第一天、最后一天
//当月第一天
Date beginOfMonth = DateUtil.beginOfMonth(date);
System.out.println("beginOfMonth: " +beginOfMonth);
//当月最后一天
Date endOfMonth = DateUtil.endOfMonth(date);
System.out.println("endOfMonth: " +endOfMonth);
  • 上个月。
//上个月
Date lastMonth = DateUtil.lastMonth();
System.out.println("lastMonth: " + lastMonth);

如果是指定日期的上个月,可以使用日期偏移相关的方法。

  • 日期偏移,减掉多少天。
    时间偏移,减掉多少个小时。
//日期偏移,减去多少天
Date offsetDay = DateUtil.offsetDay(date, -1);
System.out.println("offsetDay: " + offsetDay);
//日期偏移,减去多少个月
Date offsetMonth = DateUtil.offsetMonth(date, -1);
System.out.println("offsetMonth: " + offsetMonth);
//日期偏移,减去多少小时
Date offsetHour = DateUtil.offsetHour(date, -1);
System.out.println("offsetHour: " + offsetHour);

时间偏移,还有一些可以直接调用的函数:

//昨天
DateUtil.yesterday()
//明天
DateUtil.tomorrow()
//上周
DateUtil.lastWeek()
//下周
DateUtil.nextWeek()
//上个月
DateUtil.lastMonth()
//下个月
DateUtil.nextMonth()
  • 获取日期的年、月、日
int year = DateUtil.year(date);
System.out.println("year: " + year);//month的枚举,是从0开始的。所以得加上1
int month = DateUtil.month(date) + 1;
System.out.println("month: " + month);int day = DateUtil.dayOfMonth(date);
System.out.println("day: " + day);
  • 计算日期相差多少天。

betweenDay(Date beginDate, Date endDate, boolean isReset) 有三个参数,

解释如下:

	 * 有时候我们计算相差天数的时候需要忽略时分秒。* 比如:2016-02-01 23:59:59和2016-02-02 00:00:00相差一秒* 如果isReset为{@code false}相差天数为0。* 如果isReset为{@code true}相差天数将被计算为1* </pre>** @param beginDate 起始日期* @param endDate   结束日期* @param isReset   是否重置时间为起始时间public static long betweenDay(Date beginDate, Date endDate, boolean isReset) 

示例如下:

Date date1 = DateUtil.parse("2023-04-13 15:06:27", "yyyy-MM-dd HH:mm:ss");
System.out.println("date1: " + date1);Date date2 = DateUtil.parse("2023-05-13 16:01:03", "yyyy-MM-dd HH:mm:ss");
System.out.println("date2: " + date2);long betweenDay = DateUtil.betweenDay(date1, date2, true);
System.out.println("betweenDay: " + betweenDay);

其他的 betweenMonth() 方法类似,就是 计算日期相差多少个月。。

  • 时分秒置零:
//修改日期为某个时间字段起始时间。比如以下表示时分秒置零
Date truncate = DateUtil.truncate(date, DateField.DAY_OF_MONTH);
System.out.println("truncate: " + truncate);

IdUtils 生成唯一id

  • 生成随机UUID:
  String uuid = IdUtil.randomUUID();//格式:cbb021c7-cb48-44cd-b8ba-814620ee4340System.out.println(uuid);
  • 生成UUID,没有横线:
  String uuid = IdUtil.simpleUUID();//格式:a7e0edfb17ac4120a03842f938f88d34System.out.println(uuid);
  • 雪花算法。获取唯一id。
  long id = IdUtil.getSnowflakeNextId();//格式:1648328806748430336System.out.println(id);String idStr = IdUtil.getSnowflakeNextIdStr();//格式:"1648328806752624640"System.out.println(idStr);//旧版本,使用如下://IdUtil.getSnowflake(1,1).nextIdStr();
  • 雪花算法。配合终端ID和数据中心ID。生成唯一id。
  //workerId     终端ID// datacenterId 数据中心IDSnowflake snowflake = IdUtil.getSnowflake(1, 1);long id = snowflake.nextId();//格式:1648328965712121856System.out.println(id);String idStr = snowflake.nextIdStr();//格式:1648328965716316160System.out.println(idStr);

BeanUtil 工具类:

常用方法:

Map<String, Object> beanToMap(Object bean, String... properties): bean转map。可选拷贝哪些属性值,默认是不忽略值为null的值的。
toBean(Object source, Class<T> clazz):Map转Bean。
copyProperties(Object source, Class<T> tClass, String... ignoreProperties): 按照Bean对象属性创建对应的Class对象,并忽略某些属性。

示例如下:

Person person = new Person();
person.setAge(18);
person.setName("test");// bean转map
Map<String, Object> map = BeanUtil.beanToMap(person);
// map转bean
Person person1 = BeanUtil.toBean(map, Person.class);
// 属性拷贝
Person person2 = BeanUtil.copyProperties(person1, Person.class);System.out.println("map:" + map.toString());
System.out.println("person1:" + person1.toString());
System.out.println("person2:" + person2.toString());

Hutool的 Http 工具类:

  • GET 请求:
String  response = HttpUtil.get(url);String  response = HttpUtil.get(url,timeout);String  response = HttpUtil.get(url,paramMap);String  response = HttpUtil.get(url,paramMap,timeout);//body():结尾的body()是 HttpResponse里面的方法,表示获取响应中的body内容。
String  response = HttpUtil.createGet(url).execute().body();

GET请求的示例如下:

String url = "xx.xx.xx.xx:8086/order/detail?orderId=123456789";
//发送get请求并接收响应数据
String  response = HttpUtil.createGet(url).execute().body();//以上代码相当于:
//HttpResponse httpResponse = HttpUtil.createGet(url).execute();
//String response = httpResponse.body();
  • POST 请求:

body传参形式为json时,需要将json转成字符串,不支持JSONObejct。

可以使用 JSON.toJSONString(json) 将json转化为字符串。

String  response = HttpUtil.post(url, bodyStr );String  response = HttpUtil.post(url, bodyStr , timeout);//第二个参数paramMap指表单的数据
String  response = HttpUtil.post(url, paramMap, timeout);String  response = HttpUtil.post(url, paramMap);//body():结尾的body()是 HttpResponse里面的方法,表示获取响应中的body内容。
String  response = HttpUtil.createPost(url).body(bodyStr).execute().body();String  response = HttpUtil.createPost(url).body(bodyStr).execute().body();String response = HttpRequest.post(url).body(bodyStr).addHeaders(headerMap).form(formMap).timeout(2000).execute().body();//也可以使用 HttpRequest.post()
String response = HttpRequest.post(url).body(bodyStr).execute().body();

常用方法:

timeout(int milliseconds): timeout单位是毫秒,如果想设置2秒超时,传参 2000
addHeaders(Map<String, String> headers):新增请求头,不覆盖原有请求头
form(Map<String, Object> formMap):设置map类型的表单数据
body(jsonStr): body传参形式为json需要将json转成字符串,不支持JSONObejct对象。可以使用 JSON.toJSONString(json) 将json转化为字符串。
contentType():设置contentType,比如 "application/json;charset=UTF-8"
body():结尾的body()是 HttpResponse里面的方法,表示获取响应中的body内容。

POST 请求的示例如下:

//body传参形式为json时,需要将json转成字符串,不支持JSONObejct。可以使用 JSON.toJSONString(json) 将json转化为字符串。
JSONObject json = new JSONObject();
json.put(xx, xx);
String bodyStr = JSON.toJSONString(json);//发送post请求并接收响应数据
String response = HttpRequest.post(url).body(bodyStr).execute().body();

参考资料:

https://blog.csdn.net/abst122/article/details/124091375

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/116945.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【IDEA配置】IDEA配置

参考视频&#xff1a;【idea必知必会】优化设置 告别卡顿 1. 显示内存 右击底下空白区域&#xff0c;出现memory indicator内存指示器&#xff0c;点击勾选即可显示。有的是在Settings->Appearance->Window Options里&#xff0c;如图所示&#xff1a; 2. 内存设置 …

虚拟世界游戏定制开发:创造独一无二的虚拟体验

在游戏开发领域&#xff0c;虚拟世界游戏定制开发是一项引人注目的任务&#xff0c;旨在满足客户独特的需求和愿景&#xff0c;创造一个完全个性化的虚拟世界游戏。这种类型的游戏开发需要专业的技能、深刻的游戏开发知识和密切的与客户合作&#xff0c;以确保游戏满足客户的期…

数据库Redis(二):基本数据类型

Redis中采用Key-Value键值对的形式将数据存储在数据库中&#xff0c;首先介绍Redis中针对键Key的操作命名。 Redis键Key相关命令 # 查看当前库所有key keys * # 判断某个key是否存在 exists <key> # 查看你的key是什么类型 type <key> # 删除指定的key数据 …

uboot移植之环境变量bootargs

一. 简介 uboot 中有两个非常重要的环境变量 bootcmd 和 bootargs。本文来学习 uboot的环境变量 bootargs。 bootargs 环境变量也叫命令行参数。bootargs 保存着 uboot 传递给 Linux 内核的参数。 二. uboot移植之环境变量bootargs 环境变量 bootargs 的设置是在 mx6ull_al…

CI2454 2.4g无线MCU芯片应用

Ci2454集成MCU芯片 | Ci2454是一款集成无线收发器和 8 位 RISC&#xff08;精简指令集&#xff09;MCU 的SOC芯片。 #Ci2454芯片 集成MCU芯片# 中国芯片# 无线收发器特性&#xff1a; 工作在 2.4GHz ISM 频段 调制方式&#xff1a;GFSK/FSK 数据速率&#xff1a;2Mbps/1Mbps…

数据库基础(一)【MySQL】

文章目录 安装 MySQL修改密码连接和退出数据库服务器使用 systemctl 管理服务器进程配置数据库从文件角度看待数据库查看连接情况 安装 MySQL 这是在 Linux 中安装 MySQL 的教程&#xff1a;Linux 下 MySQL 安装。本系列测试用的 MySQL 版本是 5.7&#xff0c;机器是 centOS7.…

LabVIEW中将枚举与条件结构一起使用

LabVIEW中将枚举与条件结构一起使用 枚举是一个具有相应数值的字符串标签型列表。在LabVIEW&#xff08;U8 &#xff0c; U16-默认值和U32&#xff09;中以无符号整数形式应用。 例如&#xff0c;可以有一个枚举保存四个季节&#xff0c;在这种情况下&#xff0c;每个字符串都…

Go之流程控制大全: 细节、示例与最佳实践

引言 在计算机编程中&#xff0c;流程控制是核心的组成部分&#xff0c;它决定了程序应该如何根据给定的情况执行或决策。以下是Go语言所支持的流程控制结构的简要概览&#xff1a; 流程控制类型代码if-else条件分支if condition { } else { }for循环for initialization; con…

GoLong的学习之路(一)语法之变量与常量

目录 GoLang变量批量声明变量的初始化类型推导短变量声明匿名变量 常量iota&#xff08;特殊&#xff09;&#xff08;需要重点记忆&#xff09; GoLang go的诞生为了解决在21世纪多核和网络化环境越来越复杂的变成问题而发明的Go语言。 go语言是从Ken Thomepson发明的B语言和…

分享个包含各省、市、区的编码数据的在线静态资源脚本

在翻《SpringBootVue3》——十三尼克陈作者的大型前后端分离项目实战里面&#xff0c;在看到地址管理的部分时&#xff0c;发现了该作者记录有一个静态的地址资源脚本 这里做个记录&#xff0c;打点 一、引入js <script src"https://s.yezgea02.com/1641120061385/td…

2024王道考研计算机组成原理——指令系统

零、本章概要 指令寻址&#xff1a;解决的是PC"1"的问题 数据寻址&#xff1a;使用寄存器/内存/结合 基址寻址&#xff1a;用于多道程序的并发执行 直接寻址&#xff1a;call 0x12345678 变址寻址&#xff1a;esi edi用于循环&#xff0c;因为使用直接寻址需要一堆…

超市商品管理系统 JAVA语言设计实现

目录 一、系统介绍 二、系统下载 三、系统截图 一、系统介绍 基于VueSpringBootMySQL的超市商品管理系统&#xff0c;超市区域模块、超市货架模块、商品类型模块、商品档案模块&#xff0c;分为用户网页端和管理后台&#xff0c;基于角色的访问控制&#xff0c;可将权限精确…

【Java】<泛型>,在编译阶段约束操作的数据结构,并进行检查。

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ JAVA泛型 泛型介绍&#xff1a; ①泛型&#…

HTML+CSS+JS+Django 实现前后端分离的科学计算器、利率计算器(附全部代码在gitcode链接)

&#x1f9ee;前后端分离计算器 &#x1f4da;git仓库链接和代码规范链接&#x1f4bc;PSP表格&#x1f387;成品展示&#x1f3c6;&#x1f3c6;科学计算器&#xff1a;1. 默认界面与页面切换2. 四则运算、取余、括号3. 清零Clear 回退Back4. 错误提示 Error5. 读取历史记录Hi…

2023年中职组“网络安全”赛项云南省竞赛任务书

2023年中职组“网络安全”赛项 云南省竞赛任务书 一、竞赛时间 总计&#xff1a;360分钟 竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 A模块 A-1 登录安全加固 180分钟 200分 A-2 本地安全策略配置 A-3 流量完整性保护 A-4 事件监控 A-5 服务加固…

VSCode 自动格式化

1.打开应用商店&#xff0c;搜索 prettier code formatter &#xff0c;选择第一个&#xff0c;点击安装。 2.安装完成后&#xff0c;点击文件&#xff0c;选择首选项&#xff0c;选择设置。 3.在搜索框内输入 save &#xff0c;勾选在保存时格式化文件。 4.随便打开一个文件&a…

vue3实现chart水球图

代码如下 <template> <div> <div ref"test" style"width:400px";height"400px"></div> </div> </template> <script> import * as echarts from echarts; import echarts-liquidfill; export defaul…

Access denied for user ‘root‘@‘localhost‘ (using password:YES) 解决方案(禅道相关)

如果是忘记Mysql密码或更改权限后访问不了的问题请直接跳转以下链接&#xff1a; MySQL登录时出现Access denied for user ‘root‘‘localhost‘ (using password: YES)无法打开的解决方法 关于这个问题&#xff0c;网上查到的解决方法基本都是因为忘记Mysql密码或者用户权限问…

【Java 进阶篇】Java XML解析:从入门到精通

XML&#xff08;可扩展标记语言&#xff09;是一种常用的数据格式&#xff0c;用于存储和交换数据。在Java中&#xff0c;XML解析是一项重要的任务&#xff0c;它允许您从XML文档中提取和操作数据。本篇博客将从基础开始&#xff0c;详细介绍如何在Java中解析XML文档&#xff0…

前端AJAX入门到实战,学习前端框架前必会的(ajax+node.js+webpack+git)(二)

阳光总在风雨后&#xff0c;请相信有彩虹。 案例 - 图书管理 bootstrap弹框 需求&#xff0c;点击添加按钮&#xff0c;没有离开当前页面&#xff0c;在当前页面弹出弹框&#xff08;弹窗&#xff09; 先学着实现一个简单的弹框&#xff0c;如下图右下角 bootstrap有两种方式…