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

news2024/12/21 11:06:18

前言

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 对象转换为 Map
        Map<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;
        }

        @Override
        public 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));  // true
        System.out.println(MapUtil.isNotEmpty(map));  // false
        
        // 添加元素
        map.put("key", "value");
        
        System.out.println(MapUtil.isEmpty(map));  // false
        System.out.println(MapUtil.isNotEmpty(map));  // true
    }
}

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

import cn.hutool.core.collection.MapUtil;

public class MapUtilExample {
    public static void main(String[] args) {
        // 创建一个空的 HashMap
        Map<String, String> emptyMap = MapUtil.newHashMap();
        System.out.println(emptyMap);  // 输出: {}
        
        // 创建一个带初始值的 HashMap
        Map<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");

        // 合并两个 Map
        Map<String, String> mergedMap = MapUtil.merge(map1, map2);
        System.out.println(mergedMap);  // 输出: {key1=value1, key2=value2}
    }
}

总结

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

官网地址:

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

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

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

相关文章

代码随想录day24 | leetcode 93.复原IP地址 90.子集 90.子集II

93.复原IP地址 Java class Solution {List<String> result new ArrayList<String>();StringBuilder stringBuilder new StringBuilder();public List<String> restoreIpAddresses(String s) {backtracking(s, 0, 0);return result;}// number表示stringb…

Hive是什么,Hive介绍

官方网站&#xff1a;Apache Hive Hive是一个基于Hadoop的数据仓库工具&#xff0c;主要用于处理和查询存储在HDSF上的大规模数据‌。Hive通过将结构化的数据文件映射为数据库表&#xff0c;并提供类SQL的查询功能&#xff0c;使得用户可以使用SQL语句来执行复杂的​MapReduce任…

AI智能决策赋能服装零售 实现精准商品计划与供需平衡

在服装这个典型的散对散供需模型中&#xff0c;库存问题一直是零售商面临的重大挑战。如何精准预测市场需求&#xff0c;实现供需平衡&#xff0c;成为摆在零售商面前的一道难题。然而&#xff0c;随着智能决策系统的应用&#xff0c;这一切正在悄然改变。 在这个信息爆炸的时代…

RadiAnt DICOM - 基本主题 :从 PACS 服务器打开研究

正版序列号获取&#xff1a;https://r-g.io/42ZopE RadiAnt DICOM Viewer PACS 客户端功能允许您从 PACS 主机&#xff08;图片存档和通信系统&#xff09;搜索和下载研究。 在开始之前&#xff0c;您需要确保您的 PACS 服务器和 RadiAnt 已正确配置。有关配置说明&#xff0c…

VR虚拟展馆如何平衡用户隐私保护与数据收集?

在虚拟现实&#xff08;VR&#xff09;虚拟展馆的设计和运营中&#xff0c;用户隐私保护与数据收集之间的平衡是一个至关重要的议题。 接下来&#xff0c;由专业从事VR虚拟展馆制作的圆桌3D云展厅平台为大家介绍一些策略&#xff0c;可以帮助VR虚拟展馆在收集有用数据的同时&a…

46.全排列 python

全排列 题目题目描述示例 1&#xff1a;示例 2&#xff1a;示例 3&#xff1a;提示&#xff1a; 题解解决方案&#xff1a;回溯算法思路&#xff1a;Python 实现&#xff1a;复杂度分析&#xff1a; 提交结果 题目 题目描述 给定一个不含重复数字的数组 nums &#xff0c;返回…

在Win11系统上安装Android Studio

诸神缄默不语-个人CSDN博文目录 下载地址&#xff1a;https://developer.android.google.cn/studio?hlzh-cn 官方安装教程&#xff1a;https://developer.android.google.cn/studio/install?hlzh-cn 点击Next&#xff0c;默认会同时安装Android Studio和Android虚拟机&#…

基于字节大模型的论文翻译(含免费源码)

基于字节大模型的论文翻译 源代码&#xff1a; &#x1f44f; star ✨ https://github.com/boots-coder/LLM-application 展示 项目简介 本项目是一个基于大语言模型&#xff08;Large Language Model, LLM&#xff09;的论文阅读与翻译辅助工具。它通过用户界面&#xff08…

密钥.id文件连接SSH

不用设置密码&#xff0c;直接连接

run postinstall error, please remove node_modules before retry!

下载 node_modules 报错&#xff1a;run postinstall error, please remove node_modules before retry! 原因&#xff1a;node 版本出现错误&#xff0c;我的项目之前是在 12 下运行的。解决方法&#xff1a; 先卸载node_modules清除缓存将node版本切换到12重新下载即可

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

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

双指针---和为s的两个数字

这里写自定义目录标题 题目链接问题分析代码解决执行用时 题目链接 购物车内的商品价格按照升序记录于数组 price。请在购物车中找到两个商品的价格总和刚好是 target。若存在多种情况&#xff0c;返回任一结果即可。 问题分析 暴⼒解法&#xff0c;会超时 &#xff08;两层…

处理 Audio PCM 数据24位偏移问题

在音频处理过程中&#xff0c;我们有时会遇到特殊的问题&#xff0c;例如某些WAV文件的PCM数据发生了位移&#xff0c;导致声音播放异常。最近&#xff0c;我遇到了一个具体的问题&#xff0c;48000&#xff0c;32bit&#xff0c;8ch的PCM数据每32位&#xff08;4字节&#xff…

【大模型】GraphRAG技术原理

核心概念 GraphRAG 的核心在于用大模型构建知识图谱知识图谱聚类社区化RAG RAG就是输入&#xff08;问题知识&#xff09;到大模型 1-大模型自动从海量数据中构建知识图谱&#xff08;提取合并实体关系&#xff09; 2-聚类算法从知识图谱中聚类社区并生成社区摘要 3-输入问题…

Vue与React:前端框架的巅峰对决

文章目录 一、引言&#xff08;一&#xff09;前端框架发展现状简述 二、Vue 与 React 框架概述&#xff08;一&#xff09;Vue.js 简介&#xff08;二&#xff09;React.js 简介 三、开发效率对比&#xff08;一&#xff09;Vue 开发效率分析&#xff08;二&#xff09;React …

Ubuntu下C语言操作kafka示例

目录 安装kafka&#xff1a; 安装librdkafka consumer Producer 测试运行 安装kafka&#xff1a; Ubuntu下Kafka安装及使用_ubuntu安装kafka-CSDN博客 安装librdkafka github地址&#xff1a;GitHub - confluentinc/librdkafka: The Apache Kafka C/C library $ apt in…

线程池ForkJoinPool详解

由一道算法题引发的思考 算法题&#xff1a;如何充分利用多核CPU的性能&#xff0c;快速对一个2千万大小的数组进行排序&#xff1f; 这道算法题可以拆解来看&#xff1a; 1&#xff09;首先这是一道排序的算法题&#xff0c;而且是需要使用高效的排序算法对2千万大小的数组…

基于多尺度动态卷积的图像分类

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

[Linux] 信号保存与处理

&#x1fa90;&#x1fa90;&#x1fa90;欢迎来到程序员餐厅&#x1f4ab;&#x1f4ab;&#x1f4ab; 主厨&#xff1a;邪王真眼 主厨的主页&#xff1a;Chef‘s blog 所属专栏&#xff1a;青果大战linux 总有光环在陨落&#xff0c;总有新星在闪烁 信号的保存 下面的概…

计算机网络-GRE Over IPSec实验

一、概述 前情回顾&#xff1a;上次基于IPsec VPN的主模式进行了基础实验&#xff0c;但是很多高级特性没有涉及&#xff0c;如ike v2、不同传输模式、DPD检测、路由方式引入路由、野蛮模式等等&#xff0c;以后继续学习吧。 前面我们已经学习了GRE可以基于隧道口实现分支互联&…