当前位置: 首页 > news >正文

Hutool工具包的常用工具类的使用介绍

前言

Hutool 是一个轻量级的 Java 工具类库,提供了非常丰富的工具方法,可以大大减少开发时的重复性工作。它的目标是让 Java 开发更简单、更高效。Hutool 提供了多种常用功能,以下是一些常用工具类的使用介绍:

1. StrUtil - 字符串工具类

StrUtil 提供了大量的字符串处理方法,如字符串的空值判断、去除空格、字符串拼接等。

import cn.hutool.core.util.StrUtil;public class StrUtilExample {public static void main(String[] args) {String str = "  Hello Hutool  ";// 去除两端空白String trimmed = StrUtil.trim(str);System.out.println(trimmed);  // "Hello Hutool"// 判断字符串是否为空boolean isEmpty = StrUtil.isEmpty(str);System.out.println(isEmpty);  // false// 判断字符串是否为空或只包含空格boolean isBlank = StrUtil.isBlank(str);System.out.println(isBlank);  // false// 拼接字符串String joined = StrUtil.join("-", "a", "b", "c");System.out.println(joined);  // "a-b-c"}
}

常用方法:

  • trim(String str):去掉字符串前后的空白字符。
  • isEmpty(String str):判断字符串是否为空(不包括空白字符)。
  • isBlank(String str):判断字符串是否为空或仅包含空白字符。
  • join(String separator, Object... elements):将多个字符串用指定分隔符连接。

2. CollUtil - 集合工具类

CollUtil 提供了集合相关的常用操作,如集合是否为空、集合合并、集合去重等。

import cn.hutool.core.collection.CollUtil;
import java.util.List;public class CollUtilExample {public static void main(String[] args) {List<String> list1 = CollUtil.newArrayList("a", "b", "c");List<String> list2 = CollUtil.newArrayList("d", "e");// 合并集合List<String> combined = CollUtil.union(list1, list2);System.out.println(combined);  // ["a", "b", "c", "d", "e"]// 去重集合List<String> listWithDuplicates = CollUtil.newArrayList("a", "b", "a", "c");List<String> uniqueList = CollUtil.removeDuplicate(listWithDuplicates);System.out.println(uniqueList);  // ["a", "b", "c"]// 判断集合是否为空boolean isEmpty = CollUtil.isEmpty(list1);System.out.println(isEmpty);  // false}
}

常用方法:

  • union(Collection<T> coll1, Collection<T> coll2):合并两个集合。
  • removeDuplicate(List<T> list):去重列表中的重复元素。
  • isEmpty(Collection<T> coll):判断集合是否为空。

3. DateUtil - 日期工具类

DateUtil 是处理日期和时间的一个非常强大的工具类,支持各种日期格式的转换、计算、比较等操作。

import cn.hutool.core.date.DateUtil;
import java.util.Date;public class DateUtilExample {public static void main(String[] args) {// 获取当前日期Date now = DateUtil.date();System.out.println(now);  // 输出当前日期// 格式化日期String formattedDate = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");System.out.println(formattedDate);  // 输出格式化后的日期// 解析日期字符串Date parsedDate = DateUtil.parse("2024-12-20 10:00:00", "yyyy-MM-dd HH:mm:ss");System.out.println(parsedDate);  // 输出解析后的日期// 获取当前时间戳long timestamp = DateUtil.current();System.out.println(timestamp);  // 输出当前时间戳}
}

常用方法:

  • date():获取当前日期。
  • format(Date date, String pattern):格式化日期。
  • parse(String dateStr, String pattern):解析日期字符串。
  • current():获取当前时间戳。

4. FileUtil - 文件工具类

FileUtil 提供了大量的文件操作方法,包括读取文件、写入文件、文件夹操作等。

import cn.hutool.core.io.FileUtil;import java.io.File;public class FileUtilExample {public static void main(String[] args) {// 创建文件File file = FileUtil.touch("test.txt");System.out.println("文件创建成功:" + file.exists());// 写入内容FileUtil.writeUtf8String("Hello Hutool", file);// 读取文件内容String content = FileUtil.readUtf8String(file);System.out.println(content);  // 输出:Hello Hutool// 删除文件FileUtil.del(file);System.out.println("文件已删除:" + !file.exists());}
}

常用方法:

  • touch(String path):创建一个文件,如果文件存在,则不做任何操作。
  • writeUtf8String(String content, File file):以 UTF-8 编码向文件写入字符串。
  • readUtf8String(File file):读取文件的 UTF-8 编码内容。
  • del(File file):删除文件或目录。

5. BeanUtil - Bean 操作工具类

BeanUtil 提供了对 Java Bean 的操作方法,支持对象属性的复制、转化等。

import cn.hutool.core.bean.BeanUtil;import java.util.HashMap;
import java.util.Map;public class BeanUtilExample {public static void main(String[] args) {// 将 Map 转换为 Bean 对象Map<String, Object> map = new HashMap<>();map.put("name", "John");map.put("age", 25);Person person = BeanUtil.mapToBean(map, Person.class, false);System.out.println(person);  // Person{name='John', age=25}// 将 Bean 对象转换为 MapMap<String, Object> convertedMap = BeanUtil.beanToMap(person);System.out.println(convertedMap);  // {name=John, age=25}// 创建 User 对象User user = new User("Alice", 30);// 创建 UserDTO 对象UserDTO userDTO = new UserDTO();// 使用 BeanUtil 进行属性拷贝BeanUtil.copyProperties(user, userDTO);// 输出拷贝后的 UserDTO 对象System.out.println(userDTO);  // 输出: UserDTO{name='Alice', age=30}}static class Person {private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "Person{name='" + name + "', age=" + age + '}';}}
}

常用方法:

  • mapToBean(Map<String, Object> map, Class<T> beanClass, boolean ignoreError):将 Map 转换为 Bean 对象。
  • beanToMap(Object bean):将 Bean 转换为 Map。
  • BeanUtil.copyProperties(brand, copyBrand):属性拷贝

6. RandomUtil - 随机数工具类

RandomUtil 提供了生成随机数、随机字符、随机字符串等的工具方法。

import cn.hutool.core.util.RandomUtil;public class RandomUtilExample {public static void main(String[] args) {// 生成随机整数int randomInt = RandomUtil.randomInt();System.out.println(randomInt);// 生成指定范围的随机整数int randomIntInRange = RandomUtil.randomInt(1, 100);System.out.println(randomIntInRange);// 生成随机字符串String randomStr = RandomUtil.randomString(10);System.out.println(randomStr);}
}

常用方法:

  • randomInt():生成一个随机整数。
  • randomInt(int start, int end):生成指定范围内的随机整数。
  • randomString(int length):生成指定长度的随机字符串。

7. MapUtil - Map操作工具类

1. 判断 Map 是否为空

import cn.hutool.core.collection.MapUtil;
import java.util.Map;
import java.util.HashMap;public class MapUtilExample {public static void main(String[] args) {Map<String, String> map = new HashMap<>();// 判断 Map 是否为空System.out.println(MapUtil.isEmpty(map));  // trueSystem.out.println(MapUtil.isNotEmpty(map));  // false// 添加元素map.put("key", "value");System.out.println(MapUtil.isEmpty(map));  // falseSystem.out.println(MapUtil.isNotEmpty(map));  // true}
}

2.创建一个空的 Map 或新建一个 HashMap

import cn.hutool.core.collection.MapUtil;public class MapUtilExample {public static void main(String[] args) {// 创建一个空的 HashMapMap<String, String> emptyMap = MapUtil.newHashMap();System.out.println(emptyMap);  // 输出: {}// 创建一个带初始值的 HashMapMap<String, String> mapWithValues = MapUtil.newHashMap(3);mapWithValues.put("key1", "value1");mapWithValues.put("key2", "value2");System.out.println(mapWithValues);  // 输出: {key1=value1, key2=value2}}
}

3. 获取 Map 中的值,支持默认值

import cn.hutool.core.collection.MapUtil;import java.util.Map;
import java.util.HashMap;public class MapUtilExample {public static void main(String[] args) {Map<String, String> map = new HashMap<>();map.put("key1", "value1");// 获取 Map 中的值,存在则返回,否则返回默认值String value = MapUtil.get(map, "key1", "defaultValue");System.out.println(value);  // 输出: value1// 获取一个不存在的键,返回默认值String defaultValue = MapUtil.get(map, "key2", "defaultValue");System.out.println(defaultValue);  // 输出: defaultValue}
}

4. 合并多个 Map

import cn.hutool.core.collection.MapUtil;
import java.util.Map;
import java.util.HashMap;public class MapUtilExample {public static void main(String[] args) {Map<String, String> map1 = new HashMap<>();map1.put("key1", "value1");Map<String, String> map2 = new HashMap<>();map2.put("key2", "value2");// 合并两个 MapMap<String, String> mergedMap = MapUtil.merge(map1, map2);System.out.println(mergedMap);  // 输出: {key1=value1, key2=value2}}
}

总结

上述是一些常用的工具类,Hutool是一个小而全的Java工具类库,上述只是列举了部分,涉及到其他的使用方法可以参考官方api文档进行查询。

官网地址:

Hutool🍬一个功能丰富且易用的Java工具库,涵盖了字符串、数字、集合、编码、日期、文件、IO、加密、数据库JDBC、JSON、HTTP客户端等功能。

相关文章:

Hutool工具包的常用工具类的使用介绍

前言 Hutool 是一个轻量级的 Java 工具类库&#xff0c;提供了非常丰富的工具方法&#xff0c;可以大大减少开发时的重复性工作。它的目标是让 Java 开发更简单、更高效。Hutool 提供了多种常用功能&#xff0c;以下是一些常用工具类的使用介绍&#xff1a; 1. StrUtil - 字符…...

C++简明教程(文章要求学过一点C语言)(2)

一、什么是代码文件&#xff08;头文件和源文件&#xff09; 想象你在写一篇很长的故事&#xff08;这就好比是一个 C 程序&#xff09;&#xff0c;你可能会把故事分成不同的章节&#xff08;类似于 C 中的文件&#xff09;。 头文件&#xff08;.h&#xff09;&#xff1a;它…...

防火墙技术与网络安全

网络已经成为了人类所构建的最丰富多彩的虚拟世界&#xff0c;网络的迅速发展&#xff0c;给我们的工作和学习生活带来了巨大的改变。我们通过网络获得信息&#xff0c;共享资源。如今&#xff0c;Internet遍布世界任何一个角落&#xff0c;并且欢迎任何一个人加入其中&#xf…...

html 中 表格和表单的关系与区别

在 HTML 中&#xff0c;表格 (<table>) 和表单 (<form>) 是两种常用于展示数据和收集用户输入的元素。它们具有不同的功能和结构。以下是关于这两者的详细介绍&#xff1a; 1. HTML 表格&#xff08;<table>&#xff09; 表格用于展示结构化的数据&#xf…...

基于Java的购物网站毕业论文

标题:基于 Java 的购物网站 内容:1.研究背景 1.1.国内研究进展 近年来&#xff0c;随着我国电子商务市场的不断发展&#xff0c;越来越多的企业开始涉足电子商务领域。其中&#xff0c;基于 Java 的购物网站成为了众多企业的首选。Java 语言具有跨平台、安全性高、稳定性好等优…...

Redis——缓存预热+缓存雪崩+缓存击穿+缓存穿透

文章目录 1、 缓存预热2、 缓存雪崩3、 缓存击穿4、 缓存穿透总结 1、 缓存预热 什么是预热&#xff1a; mysql加入新增100条记录&#xff0c;一般默认以mysql为准作为底单数据&#xff0c;如何同步给redis&#xff08;布隆过滤器&#xff09;这100条新数据。 为什么需要预热…...

wxWidgets使用wxStyledTextCtrl(Scintilla编辑器)的正确姿势

开发CuteMySQL/CuteSqlite开源客户端的时候&#xff0c;需要使用Scintilla编辑器&#xff0c;来高亮显示SQL语句&#xff0c;作为C/C领域最成熟稳定又小巧的开源编辑器&#xff0c;Scintilla提供了强大的功能&#xff0c;wxWidgets对Scintilla进行包装后的是控件类&#xff1a;…...

【ETCD】【实操篇(二)】如何从源码编译并在window上搭建etcd集群?

要在 Windows 上编译 etcd 及 etcdctl 工具&#xff0c;并使用 bat 脚本启动 etcd 集群&#xff0c;首先需要准备好开发环境并确保依赖项正确安装。下面是从 etcd 3.5 源码开始编译和启动 etcd 集群的详细步骤&#xff1a; 目录 1. 安装 Go 环境2. 获取 etcd 源码3. 编译 etcd…...

服务器数据恢复—V7000存储中多块磁盘出现故障导致业务中断的数据恢复案例

服务器存储数据恢复环境&#xff1a; 一台V7000存储上共12块SAS机械硬盘&#xff08;其中1块是热备盘&#xff09;&#xff0c;组建了2组Mdisk&#xff0c;创建了一个pool。挂载在小型机上作为逻辑盘使用&#xff0c;小型机上安装的AIXSybase。 服务器存储故障&#xff1a; V7…...

冯诺依曼架构与哈佛架构的对比与应用

冯诺依曼架构&#xff08;Von Neumann Architecture&#xff09;&#xff0c;也称为 冯诺依曼模型&#xff0c;是由著名数学家和计算机科学家约翰冯诺依曼&#xff08;John von Neumann&#xff09;在1945年提出的。冯诺依曼架构为现代计算机奠定了基础&#xff0c;几乎所有现代…...

Hive其四,Hive的数据导出,案例展示,表类型介绍

目录 一、Hive的数据导出 1&#xff09;导出数据到本地目录 2&#xff09;导出到hdfs的目录下 3&#xff09;直接将结果导出到本地文件中 二、一个案例 三、表类型 1、表类型介绍 2、内部表和外部表转换 3、两种表的区别 4、练习 一、Hive的数据导出 数据导出的分类&…...

CMake function使用

在 CMake 中&#xff0c;function 用于定义一个可复用的代码块&#xff0c;可以在 CMake 脚本中多次调用。它类似于其他编程语言中的函数。函数内的变量默认是局部的&#xff0c;不会影响外部的变量&#xff0c;除非显式地使用 PARENT_SCOPE 来修改父级作用域中的变量。 基本语…...

【AI学习】Huggingface复刻Test-time Compute Scaling技术

OpenAI ChatGPT o1 背后的关键技术Test-time Compute Scaling&#xff0c;Huggingface实现并开源了&#xff01; Hugging Face 团队发布了一篇关于“开源模型中的推理阶段计算扩展”&#xff08;Test-time Compute Scaling&#xff09; 的研究文章。Hugging Face 团队通过复现…...

前端导出PDF的组件及方法

前端导出PDF的组件及方法 在Web应用程序中&#xff0c;导出PDF文件是一项常见的需求。无论是为了打印、分享还是存档&#xff0c;能够将网页内容转换为PDF格式都非常有用。幸运的是&#xff0c;前端开发者有多种方法和组件可以实现这一功能。在本文中&#xff0c;我们将详细介…...

Mac升级macOS 15 Sequoia后,无法ssh连接本地虚拟机

现象 macOS 15后&#xff0c;无法ssh连接本地启动的虚拟机&#xff0c;提示错误&#xff1a; No route to host&#xff0c;也ping不通。包括UTM、Parallels Desktop这两个虚拟机软件。之前都是没问题的&#xff0c;通过一些简单排查&#xff0c;目前没发现什么问题。 在虚拟…...

Pytorch | 利用MI-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击

Pytorch | 利用MI-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集MI-FGSM介绍背景算法原理 MI-FGSM代码实现MI-FGSM算法实现攻击效果 代码汇总mifgsm.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器&#xff1a; Pytorch | 从零构建AlexNet对CIFAR10进行…...

linux 无网络安装mysql

下载地址 通过网盘分享的文件&#xff1a;mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz 链接: https://pan.baidu.com/s/1qm48pNfGYMqBGfoqT3hxPw?pwd0012 提取码: 0012 安装 解压 tar -zxvf mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz mv /usr/mysql-5.7.33-linux-glibc2.1…...

自毁程序密码—阿里聚安全(IDA动态调试)

App信息 包名&#xff1a;com.yaotong.crackme Java层分析 MainActivity 很容易就能看出来是在securityCheck函数里进行安全校验。securityCheck是一个native函数&#xff0c;到so中进行分析。 SO层分析 定位函数位置 在导出函数里搜索 securityCheck 数据类型修复和…...

【华为OD-E卷-寻找关键钥匙 100分(python、java、c++、js、c)】

【华为OD-E卷-寻找关键钥匙 100分&#xff08;python、java、c、js、c&#xff09;】 题目 小强正在参加《密室逃生》游戏&#xff0c;当前关卡要求找到符合给定 密码K&#xff08;升序的不重复小写字母组成&#xff09; 的箱子&#xff0c;并给出箱子编号&#xff0c;箱子编…...

vscode 使用说明

文章目录 1、文档2、技巧显示与搜索宏定义和包含头文件 3、插件4、智能编写5、VSCode 与 C&#xff08;1&#xff09;安装&#xff08;2&#xff09;调试&#xff08;a&#xff09;使用 CMake 进行跨平台编译与调试&#xff08;b&#xff09;launch.json&#xff08;c&#xff…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库&#xff08;uthash库&#xff09;提供对哈希表的操作&#xff0c;文章如下&#xff1a; C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...

LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用

中达瑞和自2005年成立以来&#xff0c;一直在光谱成像领域深度钻研和发展&#xff0c;始终致力于研发高性能、高可靠性的光谱成像相机&#xff0c;为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...