成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JDK8的幾個(gè)方便快捷小知識(shí)

開(kāi)發(fā) 前端
今天就讓我們一起來(lái)看看 JDK7 和 JDK8 中的一些可以"優(yōu)化"的代碼。

阿粉相信,JDK8 現(xiàn)在已經(jīng)是非常普及的了,現(xiàn)在幾乎百分之七十以上的公司都已經(jīng)在使用了,雖然大部分的公司都換上了 JDK8 但是對(duì)于編碼習(xí)慣來(lái)說(shuō),依然能夠看到很多屬于可以?xún)?yōu)化的代碼,畢竟使用JDK8 進(jìn)行編碼的話,會(huì)讓自己的代碼看起來(lái)很優(yōu)雅。阿粉今天就來(lái)看看 JDK7 和 JDK8 中的一些可以"優(yōu)化"的代碼。

JDK8 的 fro 循環(huán)

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

獲取List中所有人員的ID

獲取值之前我們先給原始的 List 進(jìn)行賦值:

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

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

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

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

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

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

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

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

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

這個(gè)時(shí)候就有的人會(huì)說(shuō),這算啥,就這點(diǎn)代碼?

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

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

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

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

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

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

 List<User> 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":"財(cái)務(wù)部","name":"李四","id":"165001458145431986","age":21},{"deptName":"運(yùn)維部","name":"王五","id":"165001458145466505","age":22}]

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

接下來(lái)我們?cè)俳oUser里面放一個(gè)運(yùn)維部的數(shù)據(jù):

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

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

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

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

JDK8 直接簡(jiǎn)單方便:

Map<String, List<User>> collect = list.stream().collect(Collectors.groupingBy(User::getDeptName));

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

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

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

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

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

阿粉今天說(shuō)的這些簡(jiǎn)單快捷的小知識(shí),你會(huì)用了么?

責(zé)任編輯:趙寧寧 來(lái)源: Java極客技術(shù)
相關(guān)推薦

2022-04-21 07:34:34

JDK8JDK7數(shù)據(jù)

2009-12-03 09:23:17

PHP長(zhǎng)文章分頁(yè)函數(shù)

2013-11-28 10:40:55

2015-05-07 14:33:18

HTML 5編輯器中文詳解

2021-08-05 16:36:16

Windows 11操作系統(tǒng)微軟

2022-03-30 07:32:10

JDK8異步編程

2017-04-21 09:30:40

2021-08-08 14:15:30

Windows 11Windows微軟

2021-08-07 07:48:28

JDKjava JDK17

2022-05-31 07:32:19

JDK8API工具

2014-09-25 14:15:36

微信企業(yè)號(hào)案例

2020-10-29 10:59:44

Python開(kāi)發(fā)數(shù)據(jù)

2021-01-15 10:03:18

JDK8日期API

2011-05-04 14:55:09

SP-L355三星投影機(jī)

2021-10-09 21:34:13

數(shù)字人民幣微信支付寶

2022-04-18 09:54:37

JDK8日期前端

2024-04-08 07:27:02

JDK8ZGC垃圾回收

2021-05-19 10:37:16

WebFlux 前置工具

2017-03-09 10:45:31

定義內(nèi)存泄漏

2020-02-17 10:34:04

箭頭函數(shù)開(kāi)發(fā) JavaScript
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 熟女毛片 | 无码一区二区三区视频 | 97久久精品午夜一区二区 | 国产一级一片免费播放 | 成人高清在线视频 | 久久久久黑人 | 久久久久久久久蜜桃 | 伊人网伊人网 | 日韩中文字幕av | 日韩一区二区在线观看视频 | 国产目拍亚洲精品99久久精品 | 国产精品九九九 | 国产91丝袜在线播放 | 天天干夜夜操视频 | 午夜精品一区二区三区在线视频 | 在线免费观看黄色网址 | 日韩视频在线播放 | 成人久久视频 | 99精品久久久久 | 免费激情网站 | 日韩美女一区二区三区在线观看 | 国产精品一区一区 | 精品一区二区三区在线观看 | 精品久久一区 | 国产精品视频一区二区三区不卡 | 久久精品青青大伊人av | 爽爽免费视频 | 成人精品福利 | 国产 日韩 欧美 制服 另类 | 国产成人精品亚洲日本在线观看 | 青青草原精品99久久精品66 | 99久久精品免费看国产四区 | 久久精品国产一区二区电影 | 久热国产精品视频 | 国产成人免费视频 | 99日韩| 午夜码电影| 久久中文视频 | 日本精品一区二区三区在线观看 | 久久久.com | 成人免费观看男女羞羞视频 |