自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java8 中常用的List Stream場景

開發(fā) 前端
在日常工作中,我們經(jīng)常會遇到List轉(zhuǎn)Map的情況,在Stream出來之前,我們一般都是遍歷放進(jìn)Map中。

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

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

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

private String name;

private Integer age;
}

List轉(zhuǎn)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值重復(fù),則會出現(xiàn)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過濾數(shù)據(jù)
  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去重的函數(shù)。

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());

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

Java Stream Debugger

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

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

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

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

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

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

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2023-05-12 07:40:01

Java8API工具

2020-05-25 16:25:17

Java8Stream函數(shù)式接口

2014-04-15 09:40:04

Java8stream

2014-07-16 16:42:41

Java8streamreduce

2019-10-11 08:41:18

JavaMemcached數(shù)據(jù)庫

2021-05-22 23:08:08

深度學(xué)習(xí)函數(shù)算法

2024-10-09 08:42:03

2022-12-09 07:48:10

Java8Stream表達(dá)式

2022-12-30 09:24:23

Java8Stream操作

2022-04-14 15:12:40

Java8Stream列表

2021-02-18 16:06:43

JavaStream代碼

2022-08-30 21:01:17

開發(fā)Java框架

2023-03-17 16:49:42

開發(fā)Java框架

2014-11-04 10:34:27

JavaCache

2024-03-11 16:01:29

BitMap數(shù)據(jù)去重開發(fā)

2016-11-29 12:46:24

JavaJava8時間日期庫

2020-07-24 08:11:04

Java8ava5語言

2021-11-26 09:41:50

繪圖工具軟件工具開發(fā)

2023-03-30 08:00:56

MySQL日期函數(shù)

2016-09-06 22:16:42

JavaDOCXPDF
點贊
收藏

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