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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Java8中常用的ListStream場(chǎng)景

Stream是Java 8添加的一個(gè)API,結(jié)合Lambda表達(dá)式,可以提高我們對(duì)對(duì)集合處理的編碼效率。在日常工作中,我們經(jīng)常會(huì)遇到List轉(zhuǎn)Map的情況,在Stream出來(lái)之前,我們一般都是遍歷放進(jìn)map中。

這里,我們假設(shè)有個(gè)User對(duì)象。

@Getter
@Setter
public class User
{
private String id;

private String name;

private Integer age;
}

List轉(zhuǎn)Map

  1. Map中key和value都是User對(duì)象中的屬性值。
  2. Map userMap = users.stream().collect(Collectors.toMap(User::getId, User::getName))。
  3. Map中key為User對(duì)象的屬性值,value為User對(duì)象。
  4. Map userMap = users.stream().collect(Collectors.toMap(User::getId, User -> User))。
  5. 如果,我們的List中,key值重復(fù),則會(huì)出現(xiàn)Duplicate key異常,這時(shí)候,我們可以使用覆蓋的方式來(lái)避免這種異常。
  6. Map userMap = users.stream().collect(Collectors.toMap(User::getId, Function.identity(), (oldVal, newVal) -> newVal))。
  7. Map中key為User對(duì)象的屬性值,value為UserList。
Map userMap = users.stream().collect(Collectors.groupingBy(User::getId));

filter

  1. list stream過(guò)濾數(shù)據(jù)
  2. List filterUsers=users.stream().filter(item -> item.getName().equals("xxx")).collect(Collectors.toList());
  3. 去重過(guò)濾
  4. List ids=new ArrayList<>(); List distinctUsers=users.stream().filter(item->{ if(!ids.contains(item.getId())){ ids.add(item.getId()); return true; }else{ return false; } }).collect(Collectors.toList());
  5. stream有提供distinct去重的函數(shù)。

sorted

1 .按年齡升序排。

List sortUsers= users.stream().sorted(Comparator.comparing(User::getAge)).collect(Collectors.toList());

2.按年齡降序排。

List sortUsers= users.stream().sorted(Comparator.comparing(User::getAge).reversed()).collect(Collectors.toList());

除了上面的一些函數(shù)外,還有功能強(qiáng)大的函數(shù),如:limit、max、reduce等。

Java Stream Debugger

在我們使用Stream之后,調(diào)試是一個(gè)問(wèn)題。

在IDEA 2018后,會(huì)自帶Java Stream Debugger這個(gè)插件,有助于我們更直觀的了解Stream的執(zhí)行過(guò)程。插件有了,我們?cè)撊绾问褂媚兀?/p>

  1. 在需要調(diào)試Stream的地方,打上斷點(diǎn)。

2.debug模式啟動(dòng)后,在debug窗口中點(diǎn)擊Trace Current Stream Chain

我們可以點(diǎn)擊切換上面每一步的tab,查看其執(zhí)行的一個(gè)大致過(guò)程,我們也可以切換到Flat Mode模式

這里只是列舉了幾個(gè)常用的API,針對(duì)Stream的能力遠(yuǎn)比上面列舉幾個(gè)簡(jiǎn)單的功能要強(qiáng)大。


網(wǎng)站題目:Java8中常用的ListStream場(chǎng)景
本文鏈接:http://www.dlmjj.cn/article/dppchgi.html