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

简化Java开发——Hutool工具使用案例

Hutool是一个强大的Java工具类库,提供了丰富的工具方法。以下是对Hutool主要功能的一些案例解析:

1. 核心工具类

1.1 StrUtil 字符串工具

import cn.hutool.core.util.StrUtil;public class StrUtilDemo {public static void main(String[] args) {// 1. 判空操作String str = "";boolean isEmpty = StrUtil.isEmpty(str); // trueboolean isBlank = StrUtil.isBlank("  "); // true// 2. 格式化字符串String template = "我叫{},今年{}岁";String result = StrUtil.format(template, "张三", 25);System.out.println(result); // 我叫张三,今年25岁// 3. 字符串截取String str2 = "hello world";String sub1 = StrUtil.sub(str2, 0, 5); // "hello"String sub2 = StrUtil.sub(str2, -5, str2.length()); // "world"// 4. 去除前缀后缀String str3 = "test.txt";String removeSuffix = StrUtil.removeSuffix(str3, ".txt"); // "test"String removePrefix = StrUtil.removePrefix("Mr.张三", "Mr."); // "张三"// 5. 其他常用方法String hide = StrUtil.hide("13812345678", 3, 7); // "138****5678"String reverse = StrUtil.reverse("abc"); // "cba"String trim = StrUtil.trim("  hello  "); // "hello"}
}

1.2 DateUtil 日期工具

import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.DateTime;
import java.util.Date;public class DateUtilDemo {public static void main(String[] args) {// 1. 日期解析String dateStr = "2023-12-01";Date date = DateUtil.parse(dateStr);DateTime dateTime = DateUtil.parse("2023/12/01 14:30:00", "yyyy/MM/dd HH:mm:ss");// 2. 日期格式化String format = DateUtil.format(date, "yyyy年MM月dd日");System.out.println(format); // 2023年12月01日// 3. 日期计算Date now = new Date();Date yesterday = DateUtil.yesterday();Date tomorrow = DateUtil.tomorrow();Date nextWeek = DateUtil.nextWeek();// 4. 日期比较boolean isSameDay = DateUtil.isSameDay(date, now);long betweenDays = DateUtil.betweenDay(date, now, true);// 5. 获取日期部分int year = DateUtil.year(date);int month = DateUtil.month(date) + 1; // 月份从0开始int day = DateUtil.dayOfMonth(date);// 6. 日期偏移DateTime offsetDate = DateUtil.offsetDay(date, 5); // 5天后DateTime offsetHour = DateUtil.offsetHour(date, -2); // 2小时前}
}

1.3 NumberUtil 数字工具

import cn.hutool.core.util.NumberUtil;public class NumberUtilDemo {public static void main(String[] args) {// 1. 数字判断boolean isNumber = NumberUtil.isNumber("123.45"); // trueboolean isInteger = NumberUtil.isInteger("123"); // true// 2. 数学运算int add = NumberUtil.add(10, 20); // 30double div = NumberUtil.div(10, 3, 2); // 3.33int mul = NumberUtil.mul(10, 3); // 30// 3. 比较大小int max = NumberUtil.max(10, 20, 5); // 20int min = NumberUtil.min(10, 20, 5); // 5// 4. 舍入处理double round = NumberUtil.round(3.14159, 2); // 3.14double ceil = NumberUtil.ceil(3.14); // 4.0double floor = NumberUtil.floor(3.14); // 3.0// 5. 其他工具方法String toStr = NumberUtil.toStr(123); // "123"int[] ints = NumberUtil.generateRandomNumber(1, 100, 5); // 生成5个1-100的随机数}
}

2. 集合工具

2.1 CollUtil 集合工具

import cn.hutool.core.collection.CollUtil;
import java.util.*;public class CollUtilDemo {public static void main(String[] args) {// 1. 创建集合List<String> list = CollUtil.newArrayList("A", "B", "C");Set<String> set = CollUtil.newHashSet("A", "B", "C");// 2. 集合判空boolean empty = CollUtil.isEmpty(list); // falseboolean notEmpty = CollUtil.isNotEmpty(list); // true// 3. 集合操作List<String> list1 = Arrays.asList("A", "B", "C");List<String> list2 = Arrays.asList("B", "C", "D");// 交集Collection<String> intersection = CollUtil.intersection(list1, list2); // [B, C]// 并集Collection<String> union = CollUtil.union(list1, list2); // [A, B, C, D]// 差集Collection<String> disjunction = CollUtil.disjunction(list1, list2); // [A, D]// 4. 集合分组List<Map<String, Object>> dataList = new ArrayList<>();Map<String, Object> map1 = new HashMap<>();map1.put("name", "张三");map1.put("age", 20);map1.put("gender", "男");Map<String, Object> map2 = new HashMap<>();map2.put("name", "李四");map2.put("age", 25);map2.put("gender", "男");Map<String, Object> map3 = new HashMap<>();map3.put("name", "王五");map3.put("age", 20);map3.put("gender", "女");dataList.add(map1);dataList.add(map2);dataList.add(map3);// 按性别分组Map<Object, List<Map<String, Object>>> groupByGender = CollUtil.groupByField(dataList, "gender");// 5. 集合排序List<Integer> numbers = Arrays.asList(3, 1, 4, 1, 5, 9);CollUtil.sort(numbers); // [1, 1, 3, 4, 5, 9]}
}

3. 文件操作

3.1 FileUtil 文件工具

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.file.FileReader;
import cn.hutool.core.io.file.FileWriter;
import java.io.File;public class FileUtilDemo {public static void main(String[] args) {// 1. 文件操作File file = new File("test.txt");// 创建文件File touch = FileUtil.touch(file);// 写入文件FileWriter writer = new FileWriter(file);writer.write("Hello Hutool!");// 读取文件FileReader reader = new FileReader(file);String content = reader.readString();System.out.println(content); // Hello Hutool!// 2. 文件信息String fileName = FileUtil.getName("D:/test/test.txt"); // test.txtString extName = FileUtil.extName("test.txt"); // txtString mainName = FileUtil.mainName("test.txt"); // test// 3. 目录操作File dir = new File("temp");FileUtil.mkdir(dir); // 创建目录// 4. 文件复制移动File src = new File("src.txt");File dest = new File("dest.txt");FileUtil.copy(src, dest, true); // 覆盖复制// 5. 文件监听FileUtil.watch(dir, (event) -> {System.out.println("文件变化: " + event);});}
}

4. HTTP客户端

4.1 HttpUtil HTTP工具

import cn.hutool.http.HttpUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import java.util.HashMap;
import java.util.Map;public class HttpUtilDemo {public static void main(String[] args) {// 1. GET请求String result1 = HttpUtil.get("http://httpbin.org/get");System.out.println(result1);// 2. POST请求Map<String, Object> paramMap = new HashMap<>();paramMap.put("username", "admin");paramMap.put("password", "123456");String result2 = HttpUtil.post("http://httpbin.org/post", paramMap);System.out.println(result2);// 3. 下载文件String fileUrl = "http://example.com/file.zip";String savePath = "D:/download/file.zip";long size = HttpUtil.downloadFile(fileUrl, FileUtil.file(savePath));System.out.println("下载文件大小: " + size);// 4. 高级请求配置HttpResponse response = HttpRequest.post("http://httpbin.org/post").header("Content-Type", "application/json").body("{\"name\":\"hutool\"}").timeout(5000).execute();System.out.println("状态码: " + response.getStatus());System.out.println("响应体: " + response.body());// 5. 异步请求HttpRequest.get("http://httpbin.org/get").timeout(3000).executeAsync().thenAccept(resp -> {System.out.println("异步响应: " + resp.body());});}
}

5. 加密解密

5.1 加密工具

import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.symmetric.AES;
import cn.hutool.crypto.symmetric.DES;
import cn.hutool.crypto.digest.DigestUtil;public class CryptoDemo {public static void main(String[] args) {// 1. MD5加密String md5 = DigestUtil.md5Hex("hello world");System.out.println("MD5: " + md5);// 2. SHA加密String sha1 = DigestUtil.sha1Hex("hello world");String sha256 = DigestUtil.sha256Hex("hello world");System.out.println("SHA1: " + sha1);System.out.println("SHA256: " + sha256);// 3. AES加密解密String content = "这是要加密的内容";String key = "1234567890123456"; // 16位密钥AES aes = SecureUtil.aes(key.getBytes());String encryptHex = aes.encryptHex(content);String decryptStr = aes.decryptStr(encryptHex);System.out.println("AES加密: " + encryptHex);System.out.println("AES解密: " + decryptStr);// 4. DES加密解密DES des = SecureUtil.des("12345678".getBytes()); // 8位密钥String desEncrypt = des.encryptHex(content);String desDecrypt = des.decryptStr(desEncrypt);System.out.println("DES加密: " + desEncrypt);System.out.println("DES解密: " + desDecrypt);// 5. 非对称加密String rsaPublicKey = "你的公钥";String rsaPrivateKey = "你的私钥";// RSA加密解密示例// String rsaEncrypt = SecureUtil.rsa().encryptHex(content, KeyType.PublicKey, rsaPublicKey);// String rsaDecrypt = SecureUtil.rsa().decryptStr(rsaEncrypt, KeyType.PrivateKey, rsaPrivateKey);}
}

6. JSON处理

6.1 JSON工具

import cn.hutool.json.JSONUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONArray;
import java.util.List;
import java.util.Map;public class JSONUtilDemo {public static void main(String[] args) {// 1. 对象转JSONUser user = new User("张三", 25, "北京");String jsonStr = JSONUtil.toJsonStr(user);System.out.println("对象转JSON: " + jsonStr);// 2. JSON转对象User parseObj = JSONUtil.toBean(jsonStr, User.class);System.out.println("JSON转对象: " + parseObj.getName());// 3. 解析JSON字符串String json = "{\"name\":\"李四\",\"age\":30,\"address\":\"上海\"}";JSONObject jsonObject = JSONUtil.parseObj(json);String name = jsonObject.getStr("name");int age = jsonObject.getInt("age");System.out.println("姓名: " + name + ", 年龄: " + age);// 4. 处理JSON数组String jsonArrayStr = "[{\"name\":\"王五\",\"age\":28},{\"name\":\"赵六\",\"age\":32}]";JSONArray jsonArray = JSONUtil.parseArray(jsonArrayStr);for (int i = 0; i < jsonArray.size(); i++) {JSONObject obj = jsonArray.getJSONObject(i);System.out.println("用户" + (i+1) + ": " + obj.getStr("name"));}// 5. JSON数组转ListList<User> userList = JSONUtil.toList(jsonArray, User.class);for (User u : userList) {System.out.println(u.getName());}// 6. XML转JSONString xml = "<user><name>张三</name><age>25</age></user>";JSONObject xmlToJson = JSONUtil.parseFromXml(xml);System.out.println("XML转JSON: " + xmlToJson);}static class User {private String name;private int age;private String address;public User() {}public User(String name, int age, String address) {this.name = name;this.age = age;this.address = address;}// getter setter 省略}
}

7. 数据库操作

7.1 DbUtil 数据库工具

import cn.hutool.db.Db;
import cn.hutool.db.Entity;
import cn.hutool.db.ds.DSFactory;
import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.List;public class DbUtilDemo {public static void main(String[] args) throws SQLException {// 1. 获取数据源 (需要在classpath下配置db.setting)DataSource ds = DSFactory.get();// 2. 查询操作List<Entity> list = Db.use(ds).query("SELECT * FROM user WHERE age > ?", 20);for (Entity entity : list) {System.out.println(entity.getStr("name") + ": " + entity.getInt("age"));}// 3. 插入数据Entity insertEntity = Entity.create("user").set("name", "测试用户").set("age", 30).set("email", "test@example.com");int insertCount = Db.use(ds).insert(insertEntity);System.out.println("插入记录数: " + insertCount);// 4. 更新数据Entity updateEntity = Entity.create().set("age", 31);Entity where = Entity.create("user").set("name", "测试用户");int updateCount = Db.use(ds).update(updateEntity, where);System.out.println("更新记录数: " + updateCount);// 5. 删除数据Entity deleteWhere = Entity.create("user").set("name", "测试用户");int deleteCount = Db.use(ds).del(deleteWhere);System.out.println("删除记录数: " + deleteCount);// 6. 事务操作Db.use(ds).tx(db -> {// 在事务中执行多个操作db.insert(Entity.create("user").set("name", "事务用户1"));db.insert(Entity.create("user").set("name", "事务用户2"));return true; // 返回true提交,false回滚});}
}

8. 配置管理

8.1 Setting 配置工具

import cn.hutool.setting.Setting;public class SettingDemo {public static void main(String[] args) {// 1. 读取配置文件Setting setting = new Setting("config/config.setting");// 2. 获取配置值String appName = setting.getStr("app", "name");String version = setting.getStr("app", "version");int port = setting.getInt("server", "port", 8080);System.out.println("应用名称: " + appName);System.out.println("版本: " + version);System.out.println("端口: " + port);// 3. 设置配置值setting.set("app", "author", "Hutool");setting.set("database", "url", "jdbc:mysql://localhost:3306/test");// 4. 保存配置setting.store();// 5. 自动重载配置setting.autoLoad(true);// 6. 分组获取Setting appGroup = setting.getSetting("app");String name = appGroup.getStr("name");}
}

9. 验证工具

9.1 Validator 验证器

import cn.hutool.core.lang.Validator;public class ValidatorDemo {public static void main(String[] args) {// 1. 邮箱验证boolean isEmail = Validator.isEmail("test@example.com"); // true// 2. 手机号验证boolean isMobile = Validator.isMobile("13812345678"); // true// 3. 身份证验证boolean isCitizenId = Validator.isCitizenId("110101199001011234"); // true// 4. URL验证boolean isUrl = Validator.isUrl("https://www.example.com"); // true// 5. IP地址验证boolean isIpv4 = Validator.isIpv4("192.168.1.1"); // true// 6. 汉字验证boolean isChinese = Validator.isChinese("中文"); // true// 7. 数字验证boolean isNumber = Validator.isNumber("123.45"); // true// 8. 自定义正则验证boolean isMatch = Validator.isMatch("[a-zA-Z0-9]+", "abc123"); // true// 9. 非空验证boolean notEmpty = Validator.isNotEmpty("text"); // trueboolean notNull = Validator.isNotNull("object"); // trueSystem.out.println("邮箱验证: " + isEmail);System.out.println("手机号验证: " + isMobile);}
}

10. 其他实用工具

10.1 身份证工具

import cn.hutool.core.util.IdcardUtil;public class IdcardUtilDemo {public static void main(String[] args) {String idCard = "110101199001011234";// 1. 验证身份证是否合法boolean valid = IdcardUtil.isValidCard(idCard);System.out.println("身份证是否合法: " + valid);// 2. 获取身份证信息String birth = IdcardUtil.getBirth(idCard); // 19900101int age = IdcardUtil.getAgeByIdCard(idCard); // 年龄String gender = IdcardUtil.getGenderByIdCard(idCard); // 性别String province = IdcardUtil.getProvinceByIdCard(idCard); // 省份System.out.println("出生日期: " + birth);System.out.println("年龄: " + age);System.out.println("性别: " + gender);System.out.println("省份: " + province);// 3. 隐藏部分号码String hide = IdcardUtil.hide(idCard, 6, 14); // 110101********1234System.out.println("隐藏后: " + hide);}
}

10.2 随机工具

import cn.hutool.core.util.RandomUtil;public class RandomUtilDemo {public static void main(String[] args) {// 1. 生成随机数int randomInt = RandomUtil.randomInt(1, 100); // 1-100的随机整数double randomDouble = RandomUtil.randomDouble(1.0, 10.0); // 1.0-10.0的随机小数// 2. 生成随机字符串String randomString = RandomUtil.randomString(10); // 10位随机字符串String randomNumbers = RandomUtil.randomNumbers(6); // 6位随机数字String randomEle = RandomUtil.randomEle("ABCDEFG"); // 从字符串中随机选择一个字符// 3. 生成UUIDString simpleUUID = RandomUtil.simpleUUID(); // 简化的UUIDString randomUUID = RandomUtil.randomUUID(); // 标准UUID// 4. 随机选择String[] array = {"A", "B", "C", "D"};String randomEleFromArray = RandomUtil.randomEle(array); // 从数组中随机选择一个List<String> randomEles = RandomUtil.randomEles(Arrays.asList(array), 2); // 随机选择2个System.out.println("随机整数: " + randomInt);System.out.println("随机字符串: " + randomString);System.out.println("随机选择: " + randomEleFromArray);}
}

总结

  1. 核心工具:字符串、日期、数字处理
  2. 集合操作:集合工具、列表操作
  3. IO操作:文件读写、流操作
  4. 网络通信:HTTP客户端、FTP
  5. 加密解密:对称加密、非对称加密、摘要算法
  6. 数据格式:JSON、XML、CSV处理
  7. 数据库:JDBC封装、数据源管理
  8. 验证工具:各种格式验证
  9. 其他工具:身份证、随机数、反射等
http://www.dtcms.com/a/569918.html

相关文章:

  • 某次钓鱼邮件安全事件应急
  • TCP/IP 五层协议栈
  • Linex操作系统-Shell脚本(七)
  • Linux系统编程——守护进程
  • 【打靶日记】VulNyx 之 Fing
  • 个人简历模板电子版可填写郑州专业seo哪家好
  • 开发与测试的微妙平衡:从“对立”到“合作”的实战经验
  • 开源网站代码濮阳市城乡建设管理局网站
  • C++ 贪心算法(Greedy Algorithm)详解:从思想到实战
  • 新手从零开始学电脑,0元学会重装系统
  • 六安网站制作公司排名网站 绝对路径
  • AMF、SMF 和 UPF在5G网中的位置
  • 门户网站创新的方式有神马搜索seo优化排名
  • ubuntu系统中 jupyter Kernel 频繁崩溃原因
  • 返佣贵金属交易所网站建设工作组赴河南协助
  • 班级网站 模板温州网站策划
  • 笛卡尔坐标系转换(外参矩阵原理与用途)
  • 如何搭建一个简单的网站网站标题psd
  • 黑马JAVAWeb-03 SpringBootWeb-分层解耦-三层架构-@SpringBootApplication注解-IOC控制反转-DI依赖注入
  • 网站评论列表模板公司logo图标
  • Linux_Socket_TCP
  • 拼多多福利券小程序怎么赚钱潍坊seo管理
  • JAVA国际版同城外卖跑腿团购到店跑腿多合一APP系统源码支持Android+IOS+H5
  • 做电锯电音的网站古董手表网站
  • 电力工程设计AI推荐:良策金宝AI以“六大智能”重塑行业效率
  • Yolo12改进策略:下采样改进|IPFA,下采样|信息保留特征聚合模块|即插即用
  • 网站seo内部优化怎么推广平台
  • 零陵区住房和城乡建设局网站百度网址域名大全
  • 0基础学舞蹈,学习计划
  • Redis_4_常见命令(完)+认识数据类型和编码方式