hutool 文檔

hutool使用
官網:https://hutool.cn/docs/#/
就是很多工具類匯合到一起,更加方便實用!
jar

  <dependency>
      <groupId>cn.hutool</groupId>
      <artifactId>hutool-all</artifactId>
      <version>5.3.3</version>
  </dependency>

痛點

在Java開發中我們要面對各種各樣的類型轉換問題,尤其是從命令行獲取的用戶參數、從HttpRequest獲取的Parameter等等,這些參數類型多種多樣,我們怎麼去轉換他們呢?常用的辦法是先整成String,然後調用XXX.parseXXX方法,還要承受轉換失敗的風險,不得不加一層try catch,這個小小的過程混跡在業務代碼中會顯得非常難看和臃腫。

工具類們

只簡單寫了幾種。

Convert類
Convert類可以說是一個工具方法類,裏面封裝了針對Java常見類型的轉換,用於簡化類型轉換。Convert類中大部分方法爲toXXX,參數爲Object,可以實現將任意可能的類型轉換爲指定類型。同時支持第二個參數defaultValue用於在轉換失敗時返回一個默認值。

Java常見類型轉換
1、轉換爲字符串:

int a = 1;
//aStr爲"1"
String aStr = Convert.toStr(a);

long[] b = {1,2,3,4,5};
//bStr爲:"[1, 2, 3, 4, 5]"
String bStr = Convert.toStr(b);

2、轉換爲指定類型數組:

String[] b = { "1", "2", "3", "4" };
//結果爲Integer數組
Integer[] intArray = Convert.toIntArray(b);

long[] c = {1,2,3,4,5};
//結果爲Integer數組
Integer[] intArray2 = Convert.toIntArray(c);

3、轉換爲日期對象:

String a = "2017-05-06";
Date value = Convert.toDate(a);

4、轉換爲集合

Object[] a = {"a", "你", "好", "", 1};
List<?> list = Convert.convert(List.class, a);
//從4.1.11開始可以這麼用
List<?> list = Convert.toList(a);

其它類型轉換

16進制(Hex)
1、轉爲16進制(Hex)字符串

String a = "我是一個小小的可愛的字符串";

//結果:"e68891e698afe4b880e4b8aae5b08fe5b08fe79a84e58fafe788b1e79a84e5ad97e7aca6e4b8b2"
String hex = Convert.toHex(a, CharsetUtil.CHARSET_UTF_8);

2、將16進制(Hex)字符串轉爲普通字符串:

String hex = "e68891e698afe4b880e4b8aae5b08fe5b08fe79a84e58fafe788b1e79a84e5ad97e7aca6e4b8b2";

//結果爲:"我是一個小小的可愛的字符串"
String raw = Convert.hexStrToStr(hex, CharsetUtil.CHARSET_UTF_8);

//注意:在4.1.11之後hexStrToStr將改名爲hexToStr
String raw = Convert.hexToStr(hex, CharsetUtil.CHARSET_UTF_8);

Unicode和字符串轉換

String a = "我是一個小小的可愛的字符串";

//結果爲:"\\u6211\\u662f\\u4e00\\u4e2a\\u5c0f\\u5c0f\\u7684\\u53ef\\u7231\\u7684\\u5b57\\u7b26\\u4e32"    
String unicode = Convert.strToUnicode(a);

//結果爲:"我是一個小小的可愛的字符串"
String raw = Convert.unicodeToStr(unicode);

時間單位轉換

long a = 4535345;

//結果爲:75
long minutes = Convert.convertTime(a, TimeUnit.MILLISECONDS, TimeUnit.MINUTES);

金額大小寫轉換

double a = 67556.32;

//結果爲:"陸萬柒仟伍佰伍拾陸元叄角貳分"
String digitUppercase = Convert.digitToChinese(a);

注意 轉換爲大寫只能精確到分(小數點兒後兩位),之後的數字會被忽略。

日期時間

Date、long、Calendar之間的相互轉換
//當前時間
Date date = DateUtil.date();
//當前時間
Date date2 = DateUtil.date(Calendar.getInstance());
//當前時間
Date date3 = DateUtil.date(System.currentTimeMillis());
//當前時間字符串,格式:yyyy-MM-dd HH:mm:ss
String now = DateUtil.now();
//當前日期字符串,格式:yyyy-MM-dd
String today= DateUtil.today();

字符串轉日期

DateUtil.parse方法會自動識別一些常用格式,包括:
yyyy-MM-dd HH:mm:ss
yyyy-MM-dd
HH:mm:ss
yyyy-MM-dd HH:mm
yyyy-MM-dd HH:mm:ss.SSS
String dateStr = "2017-03-01";
Date date = DateUtil.parse(dateStr);

我們也可以使用自定義日期格式轉化:

String dateStr = "2017-03-01";
Date date = DateUtil.parse(dateStr, "yyyy-MM-dd");

格式化日期輸出

String dateStr = "2017-03-01";
Date date = DateUtil.parse(dateStr);

//結果 2017/03/01
String format = DateUtil.format(date, "yyyy/MM/dd");

//常用格式的格式化,結果:2017-03-01
String formatDate = DateUtil.formatDate(date);

//結果:2017-03-01 00:00:00
String formatDateTime = DateUtil.formatDateTime(date);

//結果:00:00:00
String formatTime = DateUtil.formatTime(date);

身份證工具-IdcardUtil

IdcardUtil從3.0.4版本起加入Hutool工具家族,請升級至此版本以上可使用。
工具中主要的方法包括:
isValidCard 驗證身份證是否合法
convert15To18 身份證15位轉18位
getBirthByIdCard 獲取生日
getAgeByIdCard 獲取年齡
getYearByIdCard 獲取生日年
getMonthByIdCard 獲取生日月
getDayByIdCard 獲取生日天
getGenderByIdCard 獲取性別
getProvinceByIdCard 獲取省份

線程工具 ThreadUtil

ThreadUtil.execute
直接在公共線程池中執行線程
ThreadUtil.newExecutor
獲得一個新的線程池
ThreadUtil.excAsync
執行異步方法
ThreadUtil.newCompletionService
創建CompletionService,調用其submit方法可以異步執行多個任務,最後調用take方法按照完成的順序獲得其結果。若未完成,則會阻塞。
ThreadUtil.newCountDownLatch
新建一個CountDownLatch,一個同步輔助類,在完成一組正在其他線程中執行的操作之前,它允許一個或多個線程一直等待。
ThreadUtil.sleep
掛起當前線程,是Thread.sleep的封裝,通過返回boolean值表示是否被打斷,而不是拋出異常。

圖片工具-ImgUtil等等…

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