java項目中使用hutool工具箱

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相關、 反射/類加載 、郵件等等不一一舉例了,請參照官網

https://hutool.cn/  官網

https://hutool.cn/docs/#/  官網文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章