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

Java8 中常用的List Stream場景

開發 前端
在日常工作中,我們經常會遇到List轉Map的情況,在Stream出來之前,我們一般都是遍歷放進Map中。

Stream是Java 8添加的一個API,結合Lambda表達式,可以提高我們對對集合處理的編碼效率。在日常工作中,我們經常會遇到List轉Map的情況,在Stream出來之前,我們一般都是遍歷放進map中。

這里,我們假設有個User對象。

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

private String name;

private Integer age;
}

List轉Map

  1. Map中keyvalue都是User對象中的屬性值。
  2. Map<String, String> userMap = users.stream().collect(Collectors.toMap(User::getId, User::getName))。
  3. Map中keyUser對象的屬性值,valueUser對象。
  4. Map<String, User> userMap = users.stream().collect(Collectors.toMap(User::getId, User -> User))。
  5. 如果,我們的List中,key值重復,則會出現Duplicate key異常,這時候,我們可以使用覆蓋的方式來避免這種異常。
  6. Map<String, User> userMap = users.stream().collect(Collectors.toMap(User::getId, Function.identity(), (oldVal, newVal) -> newVal))。
  7. Map中keyUser對象的屬性值,valueUserList。
Map<String, User> userMap = users.stream().collect(Collectors.groupingBy(User::getId));

filter

  1. list stream過濾數據
  2. List<User> filterUsers=users.stream().filter(item -> item.getName().equals("xxx")).collect(Collectors.toList());
  3. 去重過濾
  4. List<String> ids=new ArrayList<>(); List<User> 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去重的函數。

sorted

1 .按年齡升序排。

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

2.按年齡降序排。

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

除了上面的一些函數外,還有功能強大的函數,如:limit、maxreduce等。

Java Stream Debugger

在我們使用Stream之后,調試是一個問題。

IDEA 2018后,會自帶Java Stream Debugger這個插件,有助于我們更直觀的了解Stream的執行過程。插件有了,我們該如何使用呢?

  1. 在需要調試Stream的地方,打上斷點。

2.debug模式啟動后,在debug窗口中點擊Trace Current Stream Chain

我們可以點擊切換上面每一步的tab,查看其執行的一個大致過程,我們也可以切換到Flat Mode模式

這里只是列舉了幾個常用的API,針對Stream的能力遠比上面列舉幾個簡單的功能要強大。

責任編輯:姜華 來源: 今日頭條
相關推薦

2023-05-12 07:40:01

Java8API工具

2020-05-25 16:25:17

Java8Stream函數式接口

2014-04-15 09:40:04

Java8stream

2014-07-16 16:42:41

Java8streamreduce

2019-10-11 08:41:18

JavaMemcached數據庫

2021-05-22 23:08:08

深度學習函數算法

2024-10-09 08:42:03

2024-03-11 16:01:29

BitMap數據去重開發

2022-08-30 21:01:17

開發Java框架

2014-11-04 10:34:27

JavaCache

2023-03-17 16:49:42

開發Java框架

2022-12-30 09:24:23

Java8Stream操作

2022-12-09 07:48:10

Java8Stream表達式

2022-04-14 15:12:40

Java8Stream列表

2021-02-18 16:06:43

JavaStream代碼

2023-03-30 08:00:56

MySQL日期函數

2021-11-26 09:41:50

繪圖工具軟件工具開發

2020-07-24 08:11:04

Java8ava5語言

2016-09-06 22:16:42

JavaDOCXPDF

2016-11-29 12:46:24

JavaJava8時間日期庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久久久香蕉 | 久久久久国产精品午夜一区 | 天天干天天操 | 浮生影院免费观看中文版 | 欧美激情在线播放 | 视频在线观看一区 | 成人小视频在线观看 | 日韩午夜影院 | 国产精品夜夜夜一区二区三区尤 | 日韩在线中文 | 日韩在线中文字幕 | 欧美一级做a爰片免费视频 国产美女特级嫩嫩嫩bbb片 | 久久美女视频 | 黄久久久 | 91麻豆精品国产91久久久更新资源速度超快 | 成人黄色电影在线播放 | 精品欧美一区二区三区久久久 | 午夜性视频 | 黄色国产在线播放 | 免费毛片网站在线观看 | 九色porny自拍视频 | 视频一二三区 | 黄色片av| 欧美伊人久久久久久久久影院 | 亚洲成人一区 | 国产成人免费视频 | 欧美一级二级在线观看 | 国产一区二区三区 | 亚洲成人精品国产 | 亚洲精品视频在线看 | 久草青青草 | 成人午夜激情 | 久久新| 成人中文字幕在线 | av黄色在线观看 | 国产在线a| 久久久精品亚洲 | 国内精品久久影院 | 久久人体 | 国产一区二区精品在线 | 午夜影视 |