提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、Hutool工具
Hutool工具类简介
Hutool是一个Java工具库,提供了丰富的工具方法,涵盖字符串、日期、IO、加密、HTTP等常见操作。在Spring Boot项目中引入Hutool可以简化开发,提升效率。
Spring Boot集成Hutool
在
pom.xml
中添加Hutool依赖:<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.16</version> </dependency>
常用工具类及示例
字符串工具(StrUtil)
// 判断空字符串 boolean isEmpty = StrUtil.isEmpty(""); // true // 格式化字符串 String template = "姓名:{},年龄:{}"; String result = StrUtil.format(template, "张三", 25); // "姓名:张三,年龄:25"
日期工具(DateUtil)
// 当前日期 DateTime now = DateUtil.date(); // 日期格式化 String format = DateUtil.format(now, "yyyy-MM-dd"); // 日期加减 DateTime nextWeek = DateUtil.offsetDay(now, 7);
文件工具(FileUtil)
// 读取文件内容 String content = FileUtil.readUtf8String("/path/to/file.txt"); // 写入文件 FileUtil.writeUtf8String("Hello Hutool", "/path/to/file.txt");
HTTP工具(HttpUtil)
// GET请求 String response = HttpUtil.get("https://example.com"); // POST请求(表单) HashMap<String, Object> params = new HashMap<>(); params.put("key", "value"); String postResponse = HttpUtil.post("https://example.com", params);
加密工具(SecureUtil)
// MD5加密 String md5 = SecureUtil.md5("123456"); // AES加密解密 String data = "Hello Hutool"; String key = "1234567890123456"; String encrypt = SecureUtil.aes(key.getBytes()).encryptHex(data); String decrypt = SecureUtil.aes(key.getBytes()).decryptStr(encrypt);
集合工具(CollUtil)
List<String> list = CollUtil.newArrayList("A", "B", "C"); // 判断集合是否为空 boolean empty = CollUtil.isEmpty(list); // 分页 List<List<String>> page = CollUtil.page(list, 1, 2);
JSON工具(JSONUtil)
// 对象转JSON User user = new User("张三", 25); String json = JSONUtil.toJsonStr(user); // JSON转对象 User parsedUser = JSONUtil.toBean(json, User.class);
缓存工具(SimpleCache)
Cache<String, String> cache = new SimpleCache<>(); cache.put("key", "value"); String cachedValue = cache.get("key");
其他实用工具类
- IdUtil:生成UUID、雪花ID等。
- RandomUtil:生成随机数、字符串。
- BeanUtil:JavaBean属性拷贝。
- ReflectUtil:反射操作工具。
- NumberUtil:数字计算(加减乘除、精确计算)。
- HexUtil:十六进制转换。
-
注意事项
- Hutool工具类均为静态方法,无需实例化。
- 部分工具类(如HTTP、加密)需注意线程安全和性能问题。
- 详细文档参考Hutool官网。
1. 链表类 (LinkedList)
链表是一种线性数据结构,由节点组成,每个节点存储数据和指向下一个节点的引用。它常用于实现动态大小集合,插入和删除操作的平均时间复杂度为 $O(1)$(在已知位置时),但查找需要 $O(n)$。
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def append(self, data):
"""在链表末尾添加一个节点"""
new_node = Node(data)
if not self.head:
self.head = new_node
return
last = self.head
while last.next:
last = last.next
last.next = new_node
def display(self):
"""打印链表所有元素"""
current = self.head
while current:
print(current.data, end=" -> ")
current = current.next
print("None")
# 示例用法
llist = LinkedList()
llist.append(1)
llist.append(2)
llist.append(3)
llist.display() # 输出: 1 -> 2 -> 3 -> None
2. 栈类 (Stack)
栈是一种后进先出(LIFO)的数据结构,常用于函数调用、表达式求值等场景。主要操作包括入栈(push)和出栈(pop),时间复杂度均为 $O(1)$。
class Stack:
def __init__(self):
self.items = []
def push(self, item):
"""元素入栈"""
self.items.append(item)
def pop(self):
"""元素出栈并返回"""
if not self.is_empty():
return self.items.pop()
raise IndexError("栈为空")
def is_empty(self):
"""检查栈是否为空"""
return len(self.items) == 0
def peek(self):
"""返回栈顶元素但不移除"""
if not self.is_empty():
return self.items[-1]
raise IndexError("栈为空")
# 示例用法
stack = Stack()
stack.push(10)
stack.push(20)
print(stack.pop()) # 输出: 20
print(stack.peek()) # 输出: 10
3. 队列类 (Queue)
队列是一种先进先出(FIFO)的数据结构,适用于任务调度、缓冲等场景。入队(enqueue)和出队(dequeue)操作的平均时间复杂度为 $O(1)$。
class Queue:
def __init__(self):
self.items = []
def enqueue(self, item):
"""元素入队"""
self.items.append(item)
def dequeue(self):
"""元素出队并返回"""
if not self.is_empty():
return self.items.pop(0)
raise IndexError("队列为空")
def is_empty(self):
"""检查队列是否为空"""
return len(self.items) == 0
def size(self):
"""返回队列大小"""
return len(self.items)
# 示例用法
queue = Queue()
queue.enqueue("A")
queue.enqueue("B")
print(queue.dequeue()) # 输出: A
print(queue.size()) # 输出: 1
这些类都是基础且常用的,您可以根据需要扩展功能(如添加错误处理或更多方法)。如果您有特定场景或想添加其他类(如二叉树或哈希表),请告诉我,我可以继续补充!