hutool介紹:
官網文檔:https://hutool.cn/docs/#/
Hutool是一個小而全的Java工具類庫,通過靜態方法封裝,降低相關API的學習成本,提高工作效率,使Java擁有函數式語言般的優雅,讓Java語言也可以“甜甜的”。
一、pom.xml中引入hutool依賴
<!--hutool 工具集合引入-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.1.0</version>
</dependency>
<!--可選 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
<scope>provided</scope>
</dependency>
二、使用示例(常用)
1、Assert斷言
public class AssertTest {
@Test
public void test1(){
String a="abc"+"def";
//斷言爲表達式的結果爲真
Assert.isTrue(a.equals("abcdef"));
String b="11";
Assert.notNull(b);//斷言對象不爲null
String c=null;
Assert.isNull(c);//斷言對象爲null
int d=8;
Assert.checkBetween(d,1,10);//斷言區間範圍
}
}
2、 字符串工具
public class StrTest {
@Test
public void test1(){
String s="a b c ";
Assert.isTrue(StrUtil.isNotEmpty(s));//不爲empty
Assert.isTrue(StrUtil.isNotBlank(s));//不爲blank
Assert.isTrue(StrUtil.cleanBlank(s).equals("abc"));//清除空白字符
//字符串模板
String s2= StrUtil.format("你好:{},歡迎來到{}的世界","小明","java");
Assert.isTrue(s2.equals("你好:小明,歡迎來到java的世界"));
//字符串模板 map存放變量值
Map<String,Object> map=new HashMap<>();
map.put("name","小明");
map.put("language","java");
String s3= StrUtil.format("你好:{name},歡迎來到{language}的世界",map);
Assert.isTrue(s3.equals("你好:小明,歡迎來到java的世界"));
}
}
3、集合工具
public class CollTest {
@Test
public void test1(){
List<String> list=new ArrayList<String>();
list.add("aa");
list.add("bb");
list.add("cc");
//集合list是否爲非空
Assert.isTrue(CollUtil.isNotEmpty(list));
}
}
4、日期工具
public class DateTest {
@Test
public void test1() {
//返回標準的yyyy-MM-dd HH:mm:ss格式的日期字符串
String now = DateUtil.now();
System.out.println(now);
Date date = new Date();
//日期對象格式化輸出
String s = DateUtil.format(date, "yyyy-MM-dd");
System.out.println(s);
//將日期字符串解析爲日期對象
Date d2= DateUtil.parse("2020-01-17","yyyy-MM-dd");
System.out.println(d2);
}
}
5、Object對象相關工具
public class ObjectTest {
@Test
public void test1(){
//對象的序列化和反序列化
Student st=new Student("張三",18,"北京");
//對象序列化爲字節
byte[] bytes= ObjectUtil.serialize(st);
//將字節數據寫入文件
FileUtil.writeBytes(bytes,new File("d:/st.obj"));
//從文件中讀取字節數據
byte[] bs=FileUtil.readBytes(new File("d:/st.obj"));
//將字節數據放序列化爲對象
Student s= ObjectUtil.unserialize(bs);
System.out.println(s);//打印對象
}
@Test
public void test2(){
//對象深克隆 ,使用流
Student s1=new Student("張三",22,"北京");
Student s2= ObjectUtil.cloneByStream(s1);
//改變克隆對象的屬性
s2.setAddress("南京");
Assert.isTrue(s1!=s2);//兩個對象是不同的
//打印兩個對象,發現各自有自己獨立的屬性數據。
System.out.println(s1);
System.out.println(s2);
}
}
6、Bean工具類
public class BeanTest {
@Test
public void test1(){
Person p=new Person();
p.setName("王大錘");
p.setAge(23);
p.setHobbies(Arrays.asList("籃球","排球","游泳"));
Map<String,Integer> m=new HashMap<>();
m.put("chinese",88);
m.put("math",89);
m.put("english",90);
p.setGrades(m);
//類似spring的EL表達式 ,根據path表達式取對象的屬性
String s= BeanUtil.getProperty(p,"hobbies[0]");
System.out.println(s);
Integer score= BeanUtil.getProperty(p,"grades['math']");
System.out.println(score);
}
@Test
public void test2(){
Person p=new Person("大錘",23);
//將bean轉爲map
Map<String,Object> m= BeanUtil.beanToMap(p);
System.out.println(m);
}
@Test
public void test3(){
Person p1=new Person("大錘",23);
Person p2=new Person();
//對象的屬性複製,類似於commom.lang3包中的BeanUtil.copyProperties
BeanUtil.copyProperties(p1,p2);
System.out.println(p2);
}
}
7、其他更多工具類,如http相關、加解密相關、文件io相關、 反射/類加載 、郵件等等不一一舉例了,請參照官網