这些工具类用起来真的很”香“
juejin.im/post/6883876475594866695
剛入行的java開發程序員可能很多情況下對于一些代碼的實現都是自己手動去實現的,不是說這樣不好,在一定的程度上這種做法其實是浪費時間的,而且很可能出現一些錯誤,不過這也是正常的,我剛入行的時候寫的代碼也是這樣,但是學會使用現成的工具類之后,可能會給你節省大量時間。
下面我主要分享一下這幾種工具類:
一、字符串相關
String 類應該是我們在平常的java開發過程中用的最多的一個類,平常我們經常需要圍繞String做一些處理,JDK自身也給我們提供了很多String API,但是功能都比較基礎。通常需要結合String 多個方法才能完成一個業務功能。
首先介紹的是Apache提供的StringUtils工具類
需要引入的pom依賴:
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.10</version> </dependency>?
說明:commons-lang3是一直在維護的新版本,建議使用這個,而不是commons-lang
1、判斷字符串是否為空
String str = "hello world";if (null == str || str.isEmpty()) { }上面的寫法想必大家應該都寫過,這段代碼雖然簡單,但是一不小心很容易造成空指針異常
使用StringUtils寫法如下:
if(StringUtils.isEmpty(str)){ } 上面的代碼判斷為字符串為空是不是更簡單呢,不過需要注意的是下面這種情況 public class UtilsTest { public static void main(String[] args) { String str1 = ""; String str2 = " "; System.out.println(StringUtils.isEmpty(str1)); System.out.println(StringUtils.isEmpty(str2)); }} 2、字符串固定長度 String result = StringUtils.leftPad("test",8,"0"); 上面leftPad方法表示返回字符串固定長度8,如果不足,在左邊補03、關鍵字替換
StringUtils.replace("abc","a","A"); StringUtils.replaceOnce("aba","a","A"); StringUtils.replacePattern("ABCabc123","[^A-Z0-9]+","");4、字符串拼接
String[] array = new String[]{"abc","123","456"};StringBuilder stringBuilder = new StringBuilder();for(String s:array){stringBuilder.append(s).append(";");} System.out.println(stringBuilder.toString()); StringUtils類使用 String[] array = new String[]{"abc","123","456"}; StringUtils.join(array,";")5、字符串拆分
StringUtils.split("a..b.c",",")二、日期相關
DateUtils和DateFormatUtils
在JDK8之前,Java只提供了一個Date類,當我們需要將Date按照一定格式轉換成字符串的時候,這個時候需要使用到SimpleDateFormat類。
1、日期轉指定格式的字符串
public class UtilsTest { public static void main(String[] args) { Date date = new Date(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateString=simpleDateFormat.format(date); System.out.println(dateString); }}看起來好像也很簡單,但是這里面用到的SimpleDateFormat不是線程安全的,這就導致在多線程環境下可能出現線程安全的問題,因此,我們可以使用common-lang3下的時間工具類DataUtils/DateFormateUtils,從而解決Date與字符串的轉換問題。
方法很簡單,上面代碼的轉換等價于如下代碼:
String dateString = DateFormatUtils.format(new Date(),"yyyy-MM-dd HH:mm:ss");System.out.println(dateString); 2、字符串轉日期 Date date = DateUtils.parseDate("2020-10-15 22:00:00","yyyy-MM-dd HH:mm:ss");System.out.println(date); 輸出結果: Thu Oct 15 22:00:00 CST 20203、DateUtils時間計算
除開上面的日期轉換之外,DateUtils還提供了很方便的時間計算的功能函數
直接貼代碼:
輸出結果:
三、集合數組相關
1、判斷是否為空
以前這樣判斷
List<String> list = new ArrayList<String>();if(null==list||list.isEmpty()){ }上面寫起來其實也不難,但是也比較容易拋出空指針異常,現在我們可以通過使用commons-collections類來幫我們判斷是否為空
pom依賴:
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-collections4</artifactId> <version>4.4</version></dependency> 使用CollectionUtils/MapUtils/ArrayUtils進行判空判斷 List<String> list = new ArrayList<String>();Map map = new HashMap();String[] strings = new String[];map.put("name", "zxb");if (CollectionUtils.isEmpty(list)) { } if (MapUtils.isEmpty(map)){ }if(ArrayUtils.isEmpty(strings)){ } 其中要注意的是ArrayUtils是commons-lang3包下的2、將數組快速加入到list中
直接上代碼:
輸出:
其他的方法這里不做過多補充,可以自己使用idea玩玩其他方法,其實Google的Guava工具類也有很多對于集合的操作增強類,自己可以去搜下對應的相關資料
四、計時相關
以前計時:
long start = System.currentTimeMillis();long end = System.currentTimeMillis();System.out.println("運行時間:"+(end-start)+"ms");上面想必大家都用過,確實很簡單,但是這種計時是非常不靈活的,默認情況下我們只能取ms為單位,如果需要分鐘呢?那就需要另外計算來轉換,我這里給大家介紹Guava stopwatch計時工具類來統計程序執行時間
pom依賴:
<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>19.0</version></dependency>使用Stopwatch工具類統計程序執行時間:
輸出結果:
有道無術,術可成;有術無道,止于術
歡迎大家關注Java之道公眾號
好文章,我在看??
總結
以上是生活随笔為你收集整理的这些工具类用起来真的很”香“的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IntelliJ IDEA母公司JetB
- 下一篇: string字符串