日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
聊聊JDK8的幾個方便快捷知識

JDK8 的 fro 循環(huán)

既然要說for循環(huán),那么沒有對比就沒有傷害,我們來對比一下使用 JDK7 的 for 循環(huán)和使用 JDK8 的 for 循環(huán)。

定安ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

獲取List中所有人員的ID

獲取值之前我們先給原始的 List 進行賦值。


private static List getList() {
User user = new User();
user.setId(UuidUtil.genLmnId());
user.setName("張三");
user.setAge(20);
user.setDeptName("開發(fā)部");
List list = new ArrayList();
list.add(user);

User user2 = new User();
user2.setId(UuidUtil.genLmnId());
user2.setName("李四");
user2.setAge(21);
user2.setDeptName("財務(wù)部");
list.add(user2);

User user3 = new User();
user3.setId(UuidUtil.genLmnId());
user3.setName("王五");
user3.setAge(22);
user3.setDeptName("運維部");
list.add(user3);
return list;
}

一會我們直接調(diào)用就可以了,User對象很簡單:

@Data
class User{
private String id;
private String name;
private Integer age;
private String deptName;
}

JDK7獲取List中的Id數(shù)據(jù):

 //給List賦值
List list = getList();
//新的IdList
List Ids = new ArrayList<>();
for (User user: list) {
Ids.add(user.getId());
}

JDK8 獲取Id數(shù)據(jù):

 List jdk8Ids = list.stream().map(User::getId).collect(Collectors.toList());
System.out.println("JDK8的獲取數(shù)據(jù)==="+JSON.toJSON(jdk8Ids));

這個時候就有的人會說,這算啥,就這點代碼?

獲取List數(shù)據(jù)中年齡大于等于21的人

傳統(tǒng)做法,不用想,直接遍歷,遍歷之后,判斷一下年齡是否是大于21,然后加入到新的對象中。這想法沒錯,那么我們來試試。

  //給List賦值
List list = getList();
//新的list
List newList= new ArrayList<>();
for (User user: list) {
if (user.getAge() >= 21){
newList.add(user);
}
}
System.out.println("JDK7的獲取數(shù)據(jù)==="+JSON.toJSON(newList));

結(jié)果是對的,能準確篩選出我們要的數(shù)據(jù):

JDK7的獲取數(shù)據(jù)===[{"deptName":"財務(wù)部","name":"李四","id":"165001403518349849","age":21},{"deptName":"運維部","name":"王五","id":"165001403518375639","age":22}]

JDK8 怎么實現(xiàn)?那就是filter,代碼來看看:

 List collect = list.stream().filter(user -> user.getAge() >= 21).collect(Collectors.toList());
System.out.println("JDK8的獲取數(shù)據(jù)==="+JSON.toJSON(collect));

我們看看數(shù)據(jù):

JDK8的獲取數(shù)據(jù)===[{"deptName":"財務(wù)部","name":"李四","id":"165001458145431986","age":21},{"deptName":"運維部","name":"王五","id":"165001458145466505","age":22}]

這個篩選,那是非常的方便,雖然內(nèi)部還是循環(huán),但是至少讓我們在寫代碼的時候,把寫循環(huán)這一塊的內(nèi)容直接給省略掉了,不用再繼續(xù)的去自己去寫循環(huán),是不是就很便利的給自己省下了一大堆的時間。

接下來我們再給User里面放一個運維部的數(shù)據(jù)。


User user4 = new User();
user4.setId(UuidUtil.genLmnId());
user4.setName("趙六");
user4.setAge(22);
user4.setDeptName("運維部");
list.add(user4);

這時候,我們沒從數(shù)據(jù)庫端進行數(shù)據(jù)的分組,可能有時候同一個接口要給很多服務(wù)去調(diào)用,但是我們又不能為了因為數(shù)據(jù)格式要求不一致,就重新在寫一段相同的邏輯代碼,只能說是根據(jù)某些參數(shù)的不同,處理一下返回值,這時候就用到另外測操作了。

按照部門返回不同部門下的人員的數(shù)據(jù)

如果我們要用SQL,那很簡單,根據(jù)部門分組,如果要是在代碼里面呢?就用我們最簡單的User來進行分組。

JDK8 直接簡單方便。

Map> collect = list.stream().collect(Collectors.groupingBy(User::getDeptName));

我們看看返回的數(shù)據(jù):

JDK8的獲取數(shù)據(jù)==={
"開發(fā)部":[{"deptName":"開發(fā)部","name":"張三","id":"165035610923271907","age":20}],
"財務(wù)部":[{"deptName":"財務(wù)部","name":"李四","id":"165035610923228403","age":21}],
"運維部":[{"deptName":"運維部","name":"王五","id":"165035610923247204","age":22},
{"deptName":"運維部","name":"趙六","id":"165035610923285576","age":22}]}

直接分組好了展示我們想要的數(shù)據(jù)。那如果要使用JDK7 處理這種分組的情況,應(yīng)該怎么處理呢?

是不是第一步要先考慮出循環(huán)出這個List里面都有哪些不同的部門,然后進行分組?

就這樣,我想想都覺得頭疼。要是能數(shù)據(jù)庫操作,那直接數(shù)據(jù)庫分組一下不就完事了,但是總是會有特殊情況需要我們?nèi)タ紤]的。所以,學(xué)會了絕對不吃虧。

阿粉今天說的這些簡單快捷的小知識,你會用了么?


網(wǎng)頁名稱:聊聊JDK8的幾個方便快捷知識
文章起源:http://www.dlmjj.cn/article/cdephoj.html