lambda 表示式入門

2021-10-09 11:54:01 字數 3546 閱讀 8795

lambda表示式由三部分組成:

paramaters:類似方法中的形參列表,這裡的引數是函式式介面裡的引數。這裡的引數型別可以明確的宣告也可不宣告而由jvm隱含的推斷1。另外當只有乙個推斷型別時可以省略掉圓括號。

->:可理解為「被用於」的意思

方法體:可以是表示式也可以**塊,是函式式介面裡方法的實現。**塊可返回乙個值或者什麼都不反回,這裡的**塊塊等同於方法的方法體。如果是表示式,也可以返回乙個值或者什麼都不反回。

1. list to map 

public class userbean

}listuserlist = new arraylist<>();

userbean userbean = new userbean("張三",21,"熱愛學習");

userlist.add(userbean);

userbean = new userbean("張三2", 25,"熱愛學習2");

userlist.add(userbean);

userbean = new userbean("張三", 27,"熱愛學習3");

userlist.add(userbean);

userbean = new userbean("張三4", 26,"熱愛學習2");

userlist.add(userbean);

system.out.println(userlist);

// list of userbean  轉 mapmap

mapmap =

userlist.stream().collect(collectors.tomap(userbean::getusername, userbean::getage,

(key1,key2) ->key2));

system.out.println("----map"+ jsonobject.tojsonstring(map));

// list of userbean  轉 mapuserbeanmap

mapuserbeanmap =

userlist.stream().collect(collectors.tomap(userbean::getusername, function.identity(),

(key1,key2) ->key2));

system.out.println("----userbeanmap"+ jsonobject.tojsonstring(userbeanmap));

// list of userbean  轉 mapuserbeanmap   if  check

mapusermapcheck = new hashmap<>();

userlist.foreach(userbean1 ->

});system.out.println("----usermapcheck"+ jsonobject.tojsonstring(usermapcheck));

// 方式2:使用流過濾,再使用foreach遍歷

mapalarmobjuuidmap2 = new hashmap<>();

alarminforesponselist.stream().

filter(alarminforesponse -> !"-1".equals(alarminforesponse.getobjuuid())).

foreach(alarminforesponse -> alarmobjuuidmap2.put(alarminforesponse.getalarmuuid(), alarminforesponse.getobjuuid()));

system.out.println("\n**********===  方式2  ********************");

alarmobjuuidmap2.foreach((alarmuuid, objuuid) -> system.out.println(alarmuuid + " : " + objuuid));

list to map ,按照key分組,key不允許為null.  

map> groupby = userlist.stream().collect(collectors.groupingby(userbean::getage)) ;

system.out.println(json.tojsonstring(groupby));

list lambda 取出某一列

listnames = userlist.stream().map(p -> p.getusername()).collect(collectors.tolist());
list 安照字段排序

​listrecordlist = equipoverrunrecordservice.findall(); 

collections.sort(recordlist, new comparator() else

}});

lambda 排序  (降序)

userlist.sort(comparator.comparing(userbean::getcreatetime, comparator.nullslast(date::compareto)).reversed());

list 過濾filter 

userlist = userlist.stream().filter(s -> ).collect(collectors.tolist());

list 單個id值去重

listnumbers = arrays.aslist(9, 10, 3, 4, 7, 3, 4);

listdistinct = numbers.stream().distinct()

.collect(collectors.tolist());

system.out.println(json.tojsonstring(distinct));

2. map   使用

1.遍歷map

可以先判斷是否為空

​collectionutils.isempty(usermapcheck);

usermapcheck.foreach((key, value) -> );

2. 兩個同樣的map合併

方式1mapresult = stream.concat(map1.entryset().stream(), map2.entryset().stream())

.collect(collectors.tomap(

map.entry::getkey,

map.entry::getvalue,

(value1, value2) -> value2));

system.out.println(json.tojsonstring(result));

方式2mapmap3 = stream.of(map1, map2)

.flatmap(map -> map.entryset().stream())

.collect(collectors.tomap(

map.entry::getkey,

map.entry::getvalue,

(v1, v2) -> v2 ));

lambda表示式入門

使用lambda表示式的條件 必須是函式式介面 什麼是函式式介面?簡單來說,就是乙個有且僅有乙個抽象方法,但是可以有多個非抽象方法的介面。inte ce animal 通過 方式一步一步推導出lambda表示式如何簡化來的 public class demo01 public static void...

lambda表示式 lambda表示式

1.概述 c 11 中的 lambda 表示式用於定義並建立匿名的函式物件,以簡化程式設計工作。lambda 的語法形式如下 函式物件引數 操作符過載函式引數 mutable 或 exception 宣告 返回值型別可以看到,lambda 主要分為五個部分 函式物件引數 操作符過載函式引數 muta...

lambda表示式入門例子

說是函式式介面。其實也可以理解為匿名內部類。最簡單的例子 functionalinte ce 表示函式式介面,編譯的時候會強制校驗 public inte ce animal 帶引數的例子 public inte ce count 省略寫法 functionalinte ce public inte...