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...