hutool 工具类提高编码效率

news/2024/11/29 2:41:01/

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.ppmy.cn/news/1170365.html

相关文章

短视频矩阵系统源码---php搭建

一、智能剪辑、矩阵分发、无人直播、爆款文案于一体独立应用开发 抖去推----主要针对本地生活的----移动端(小程序软件系统&#xff0c;目前是全国源头独立开发)&#xff0c;开发功能大拆解分享&#xff0c;功能大拆解&#xff1a; &#xff08;1&#xff09;数据概览&#x…

半导体用超高纯管材行业头部企业市场占有率及排名调研报告

内容摘要 本文调研和分析全球半导体用超高纯管材发展现状及未来趋势&#xff0c;核心内容如下&#xff1a; &#xff08;1&#xff09;全球市场总体规模&#xff0c;分别按销量和按收入进行了统计分析&#xff0c;历史数据2018-2022年&#xff0c;预测数据2023至2029年。 &…

AST反混淆实战|某国外混淆框架一小段混淆js还原分析

关注它&#xff0c;不迷路。 本文章中所有内容仅供学习交流&#xff0c;不可用于任何商业用途和非法用途&#xff0c;否则后果自负&#xff0c;如有侵权&#xff0c;请联系作者立即删除&#xff01; 1. 需求 我相信做币圈爬虫的兄弟&#xff0c;或多或少的见过类似下面的…

Mysql数据库 2.SQL语言 数据类型与字段约束

Mysql数据类型 数据类型&#xff1a;指的是数据表中的列文件支持存放的数据类型 1.数值类型 Mysql当中有多种数据类型可以存放数值&#xff0c;不同的类型存放的数值的范围或者形式是不同的 注&#xff1a;前三种数字类型我们在实际研发中用的很少&#xff0c;一般整数类型…

[Ubuntu 20.04] HEIF图像格式与libheif库及其工具的使用

一、HEIF图像格式 HEIF 是一种高效的图像文件格式,它由 MPEG(Moving Picture Experts Group)组织制定。相较于传统的 JPEG 格式,HEIF 提供了更好的图像质量和更高的压缩率。下面是对 HEIF 格式的详细解析: 图像编码技术:HEIF 使用先进的编码技术来实现更高效的图像压缩。…

java读取指定文件夹下的全部文件,并输出文件名,文件大小,文件创建时间

import java.io.IOException; import java.nio.file.*; import java.nio.file.attribute.*; import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { try { Path startingDir Paths.get("你的目…

FPGA设计FIR滤波器低通滤波器,代码及视频

名称&#xff1a;FIR滤波器低通滤波器 软件&#xff1a;Quartus 语言&#xff1a;Verilog/VHDL 本资源含有verilog及VHDL两种语言设计的工程&#xff0c;每个工程均可实现以下FIR滤波器的功能。 代码功能&#xff1a; 设计一个8阶FIR滤波器&#xff08;低通滤波器&#xff…

字符串的匹配——KMP算法的学习

一、核心&#xff1a; 当出现字符串不匹配时&#xff0c;可以记录一部分之前已经匹配的文本内容&#xff0c;利用这些信息避免从头再去做匹配&#xff0c;因此需要一个数组记录已经匹配的文本内容。 对于字符串匹配问题&#xff0c;暴力法也叫朴素求解法是将两个字符串…