一、Apache StringUtils:专为Java字符串而生的工具类
添加依赖:
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId></dependency>
1.字符串判空
isEmpty: 判断null、""
isNotEmpty:判断null、""
isBlank:判断null、""、" "
isNotBlank:判断null、""、" "
示例代码如下:
import org.apache.commons.lang3.StringUtils;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest; /** * @author qinxun * @date 2023-06-09 * @Descripion: Stringutils测试 */@SpringBootTestpublic class StringTest { @Test void test1() { String str1 = null; String str2 = ""; String str3 = " "; String str4 = "abc"; String str5 = "null"; System.out.println(StringUtils.isEmpty(str1); System.out.println(StringUtils.isEmpty(str2); System.out.println(StringUtils.isEmpty(str3); System.out.println(StringUtils.isEmpty(str4); System.out.println(StringUtils.isEmpty(str5); System.out.println(=======); System.out.println(StringUtils.isNotEmpty(str1); System.out.println(StringUtils.isNotEmpty(str2); System.out.println(StringUtils.isNotEmpty(str3); System.out.println(StringUtils.isNotEmpty(str4); System.out.println(StringUtils.isNotEmpty(str5); System.out.println(=======); System.out.println(StringUtils.isBlank(str1); System.out.println(StringUtils.isBlank(str2); System.out.println(StringUtils.isBlank(str3); System.out.println(StringUtils.isBlank(str4); System.out.println(StringUtils.isBlank(str5); System.out.println(=======); System.out.println(StringUtils.isNotBlank(str1); System.out.println(StringUtils.isNotBlank(str2); System.out.println(StringUtils.isNotBlank(str3); System.out.println(StringUtils.isNotBlank(str4); System.out.println(StringUtils.isNotBlank(str5); }}
执行结果:
truetruefalsefalsefalse=====falsefalsetruetruetrue=====truetruetruefalsefalse=====falsefalsefalsetruetrue
2.分割字符串
Stringutilssplit()方法分割字符串成数组。
示例代码如下:
import org.apache.commons.lang3.StringUtils;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest; import java.util.Arrays; /** * @author qinxun * @date 2023-06-09 * @Descripion: Stringutils测试 */@SpringBootTestpublic class StringTest { @Test void test1() { String result = "a,b,c"; String[] arr = StringUtils.split(result, ","); // 输出[a, b, c] System.out.println(Arrays.toString(arr)); }}
3.判断是否纯数字
使用StringUtilsisNumeric()判断字符串是否为纯数字形式的方法。
示例代码如下:
import org.apache.commons.lang3.StringUtils;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest; /** * @author qinxun * @date 2023-06-09 * @Descripion: Stringutils测试 */@SpringBootTestpublic class StringTest { @Test void test1() { String data1 = "2"; // 输出true System.out.println(StringUtils.isNumeric(data1); String data2 = "hello"; // 输出false System.out.println(StringUtils.isNumeric(data2); }}
4.将集合拼接成字符串
使用Stringutils的join(集合,“需要拼接的字符”)将集合的数据拼接成字符串。
示例代码如下:
import org.apache.commons.lang3.StringUtils;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest; import java.util.ArrayList;import java.util.List; /** * @author qinxun * @date 2023-06-09 * @Descripion: Stringutils测试 */@SpringBootTestpublic class StringTest { @Test void test1() { List<String> list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); // 输出a,b,c System.out.println(StringUtils.join(list, ",")); }}
5.其他方法
trim(String str):清除字符串首尾的空白字符。
trimToEmpty(String str):如果字符串在字符串的开头和结尾去除空白字符,如果字符串是 null,然后返回空字符串。
trimToNull(String str):删除字符串首尾的空白字符。如果结果是空字符串,则返回 null。
equals(String str1, String str2):比较两个字符串是否相等。
equalsIgnoreCase(String str1, String str2):比较两个字符串是否相等,忽略大小写。
startsWith(String str, String prefix):检查字符串是否从指定的前缀开始。
endsWith(String str, String suffix):检查字符串是否以指定的后缀结束。
contains(String str, CharSequence seq):检查字符串是否包含指定的字符序列。
indexOf(String str, CharSequence seq):如果找不到指定字符序列中首次出现的索引,则返回指定字符序列 -1。
lastIndexOf(String str, CharSequence seq):如果找不到指定字符序列中最后一次出现的索引,则返回指定字符序列 -1。
substring(String str, int start, int end):截取字符串中指定范围的子串。
replace(String str, String searchString, String replacement):所有出现在替换字符串中的搜索字符串都是指定的替换字符串。
replaceAll(String str, String regex, String replacement):使用正则表达式替换字符串中所有匹配的部分。
join(Iterable<?> iterable, String separator):可迭代对象中的元素用指定的分隔符连接成字符串。
split(String str, String separator):使用指定的分隔符将字符串分成字符串数组。
capitalize(String str):将字符串的第一个字符转换为大写。
uncapitalize(String str):将字符串的第一个字符转换为小写。
二、Hutol工具包添加依赖:
<!--hutool--><dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.12</version></dependency>
1.类型转换
当我们接收从客户端传输的数据时,我们通常需要把这些数据放在一边数据转换成为我们需要的数据类型。
示例代码如下:
import cn.hutool.core.convert.Convert;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest; /** * @author qinxun * @date 2023-06-09 * @Descripion: hutool测试 */@SpringBootTestpublic class HutoolTest { @Test void test1() { String param = null; // 输出null System.out.println(Convert.toInt(param)); // 设置默认值 输出0 System.out.println(Convert.toInt(param, 0)); // 输出Fri Jun 09 00:00:00 CST 2023 System.out.println(Convert.toDate(2023年6月9日); }}
2.日期时间转换
我们使用Dateutil格式日期
示例代码如下:
import cn.hutool.core.date.DateTime;import cn.hutool.core.date.DateUtil;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest; import java.util.Date; /** * @author qinxun * @date 2023-06-09 * @Descripion: hutool测试 */@SpringBootTestpublic class HutoolTest { @Test void test1() { // 输出2023-06-09 09:55:24 System.out.println(DateUtil.date()); // 输出2023-06-09 00:00:00 DateTime dateTime = DateUtil.parse("2023-06-09"); System.out.println(dateTime); // 输出2023-06-09 Date date = new Date(); System.out.println(DateUtil.formatDate(date)); }}
3.反射工具
Hutool 包装反射工具 ReflectUtil 包括:
- 获取结构方法
- 获取字段
- 获取字段值
- 获取方法
- 执行方法(对象方法和静态方法)
示例代码如下:
import cn.hutool.core.util.ReflectUtil; import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method; /** * @author qinxun * @date 2023-06-09 * @Descripion: Reflectutil测试 */public class ReflectTest { private int id; public ReflectTest() { System.out.println(“构造方法”); } public void show() { System.out.println(“普通方法”); } public static void main(String[] args) throws IllegalAccessException { // 获取对象 ReflectTest reflectTest = ReflectUtil.newInstance(ReflectTest.class); reflectTest.show(); // 构造方法 Constructor[] constructors = ReflectUtil.getConstructors(ReflectTest.class); for (Constructor constructor : constructors) { System.out.println(constructor.getName()); } // 获取字段 Field field = ReflectUtil.getField(ReflectTest.class, "id"); field.setInt(reflectTest, 20); // 输出20 System.out.println(ReflectUtil.getFieldValue(reflectTest, field)); Method[] methods = ReflectUtil.getMethods(ReflectTest.class); for (Method method : methods) { System.out.println(method.getName()); } // 获取指定的方法 Method method = ReflectUtil.getMethod(ReflectTest.class, "show"); System.out.println(method.getName()); // 执行方法 输出普通方法 ReflectUtil.invoke(reflectTest, "show"); }}
4.身份证工具
IsvalidCard使用Idcardutil验证身份证是否合法。
示例代码如下:
import cn.hutool.core.util.IdcardUtil;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest; /** * @author qinxun * @date 2023-06-09 * @Descripion: hutool测试 */@SpringBootTestpublic class HutoolTest { @Test void test1() { // 输出false System.out.println(IdcardUtil.isValidCard("43243")); }}
5.字段验证器
验证从客户端传输的数据,如手机号码、邮箱、IP地址等是否合法。
6.缓存工具
CacheUtil 是 Hutool 可以创建不同的缓存对象来创建快速的包装工具:
FIFOCache:先入先出,元素不断添加缓存,直到缓存满为止。当缓存满时,清理过期缓存对象,清理后仍满时,删除先入缓存。
LFUCache,至少使用时,根据使用次数确定对象是否持续缓存。当缓存满时,清理过期对象,清理后仍满时,清除最少访问对象,减去其他对象的最低访问次数,使新对象进入后能够公平计数。
LRUCache,最近最长时间没有使用,根据使用时间确定对象是否持续缓存,当对象被访问时放入缓存,当缓存满时,最长时间没有使用的对象将被移除。
示例代码如下:
import cn.hutool.cache.Cache;import cn.hutool.cache.CacheUtil;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest; /** * @author qinxun * @date 2023-06-09 * @Descripion: hutool测试 */@SpringBootTestpublic class HutoolTest { @Test void test1() { Cache<String, String> fifoCache = CacheUtil.newFIFOCache(3); fifoCache.put(key1”, "a"); fifoCache.put(key2”, "b"); fifoCache.put(key3”, "c"); fifoCache.put(key4”, "d"); // 缓存大小为 3,所以 key4 放入后 key1 被清除 输出null System.out.println(fifoCache.get(key1); // 输出b System.out.println(fifoCache.get(key2); Cache<String, String> lfuCache = CacheUtil.newLFUCache(3); lfuCache.put(key1”, "a"); // 使用次数+1 lfuCache.get(key1); lfuCache.put(key2”, "b"); lfuCache.put(key3”, "c"); lfuCache.put(key4”, "d"); // 因为只有缓存容量 3,当加入第 4 当一个元素时,至少使用的元素将被移除(2)3被移除) // 都是输出null System.out.println(lfuCache.get(key2); System.out.println(lfuCache.get(key3); Cache<String, String> lruCache = CacheUtil.newLRUCache(3); lruCache.put(key1”, "a"); lruCache.put(key2”, "b"); lruCache.put(key3”, "c"); // 使用时间近了 lruCache.get(key1); lruCache.put(key4”, "d"); // 因为只有缓存容量 3,当加入第 4 当一个元素时,最长的使用将被移除(2) String value2 = lruCache.get(key2); // 输出null System.out.println(value2); }}
三、Guava:Java工具库Google开源添加依赖:
<!--guava--><dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>31.1-jre</version></dependency>
1.字符串处理
示例代码如下:
import com.google.common.base.Joiner;import com.google.common.base.Splitter;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest; import java.util.Optional; /** * @author qinxun * @date 2023-06-09 * @Descripion: Guava测试 */@SpringBootTestpublic class GuavaTest { @Test void test() { // 1.字符串拼接 Joiner joiner = Joiner.on(","); // 输出hello,world,qq System.out.println(joiner.join("hello", "world", "qq")); // 2.拆分字符串 String data = "hello,world,qq"; // 输出[hello, world, qq] System.out.println(Splitter.on(",").splitToList(data)); }}
2.集合工具
示例代码如下:
import com.google.common.collect.Lists;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest;import java.util.List; /** * @author qinxun * @date 2023-06-09 * @Descripion: Guava测试 */@SpringBootTestpublic class GuavaTest { @Test void test() { // 创建空集合 List<Integer> emptyList = Lists.newArrayList(); // 初始化集合 List<Integer> initList = Lists.newArrayList(1, 2, 3); // 输出[] System.out.println(emptyList); // 输出[1, 2, 3] System.out.println(initList); }}