別在重複造輪子了,幾個值得應用到專案中的 Java 開源庫送給你
阿新 • • 發佈:2020-06-09
> 我是風箏,公眾號「古時的風箏」。文章會收錄在 [JavaNewBee](https://github.com/huzhicheng/JavaNewBee) 中,更有 Java 後端知識圖譜,從小白到大牛要走的路都在裡面。公眾號回覆『666』獲取高清大圖。
風箏我作為一個野路子開發者,直到遇見下面的這幾個工具庫,才知道之前重複造了不少輪子,而且輪子還不一定有人家的圓。相信跟我一樣,沒事兒造輪子的人還不在少數,有些人就是對造輪子感興趣,這個咱也無話可說,但是,比如我,我是造輪子之前不知道這世上已經有好用的輪子了,害,無知限制了我的想象力。
比如我們在拿到一個 List 集合之後,要對這個集合進行判空操作,以前我一直是這樣寫的:
```java
List list = getList();
if (list != null && list.size() > 0) {
//do something
}
```
雖然這樣也沒什麼問題,但是,我懶啊,每次敲這麼多程式碼,也挺累啊。有同學說,那你包裝成一個方法不就行了,每次呼叫個方法就 OK 啦。這不,同學,你就在造輪子了,已經有人幫你寫好了這樣類似的一系列方法了。
來讓我們認識認識這些輪子吧。
## Java 8 Stream
Stream 不算是工具庫,但是通過 stream 提供的一系列方法,可以實現集合的過濾、分組、集合轉換等諸多操作。
例如下面的方法,實現列表元素根據某個欄位去重的功能。
```java
List userList = new ArrayList();
//新增元素
userList = userList.stream().filter(distinctByKey(user->user.getUserId())).collect(Collectors.toList());
private static Predicate distinctByKey(Function super T, ?> keyExtractor) {
Map