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

Java8之22個lambda表達式用法入門示例超簡單,這還不會你就Out了

開發 前端
lambda表達式簡明扼要的以流水線的方式去處理集合內的數據,可以很輕松的完成過濾、分組、收集、歸約這類操作。

lambda表達式簡明扼要的以流水線的方式去處理集合內的數據,可以很輕松的完成過濾、分組、收集、歸約這類操作。

總得來說,lambda的操作分為兩類:中間型和最終型。

中間型操作

1、filter

filter會按照指定的條件匹配出符合要求的元素,并返回一個新的stream流,可以配合其他中間型或最終型API使用。

示例:

List<String> dataList = Lists.newArrayList("first", "second", "third");
List<String> filter = dataList.stream()
.filter(
//篩選出值為second的匹配項
data -> data.equals("second")
)
.collect(Collectors.toList());
System.out.println(filter);// [second]

2、map

map可以將一個對象轉換為另一個對象,并返回一個新的stream流,比如將一個Integer對象轉換為String對象。

示例:

List<Integer> dataList = Lists.newArrayList(1, 2, 3);
List<String> transform = dataList.stream()
.map(
//也可以寫成String::valueOf
data -> String.valueOf(data)
)
.collect(Collectors.toList());
System.out.println(JSON.toJSONString(transform));// ["1","2","3"]

3、peek

peek會對流中的元素逐個遍歷處理,它與map的區別在于:map一般用于對象的轉換,peek用于對象的消費,即不改變元素本身的類型。

List<String> dataList = Lists.newArrayList("a", "b", "c");
List<String> transform = dataList.stream()
//peek是對元素逐一消費,在這里程序會逐個打印a、b、c
.peek(data -> System.out.println(data))
//map是對元素進行轉換,這里將其轉成大寫:["A","B","C"]
.map(data -> data.toUpperCase())
.collect(Collectors.toList());

4、flatMap

flatMap可以將已有的對象轉換為另一個對象,它是一個一對多的邏輯。它與map的區別在于:map是一對一的,即將一個對象轉換為另一個對象,而flatMap是一對多的,即將一個對象拆分對多個對象。

//將["hello", "world"]轉換為["h","e","l","l","o","w","o","r","l","d"]
List<String> dataList = Lists.newArrayList("hello", "world");
List<String> transform = dataList.stream()
.flatMap(
data -> Arrays.stream(data.split(""))
)
.collect(Collectors.toList());
System.out.println(JSON.toJSONString(transform));

5、limit

就相當于sql中的limit,可以指定保留前N的元素。

List<String> dataList = Lists.newArrayList("hello", "world", "good", "boy");
List<String> transform = dataList.stream()
.limit(2)
.collect(Collectors.toList());
System.out.println(JSON.toJSONString(transform));
//["hello","world"]

6、skip

作用與limit相反,會拋棄前N的元素。

List<String> dataList = Lists.newArrayList("hello", "world", "good", "boy");
List<String> transform = dataList.stream()
.skip(2)
.collect(Collectors.toList());
System.out.println(JSON.toJSONString(transform));
//["good","boy"]

7、concat

可以將多個流的數據合并為一個流。

List<String> transform = Stream.concat(
Stream.of("hello"),
Stream.of("world")
).collect(Collectors.toList());
System.out.println(JSON.toJSONString(transform));
//["hello","world"]

8、distinct

用于對流中的元素去重。

ArrayList<String> dataList = Lists.newArrayList("1", "2", "2", "3", "3");
List<String> transform = dataList.stream().distinct().collect(Collectors.toList());
System.out.println(JSON.toJSONString(transform));
//["1","2","3"]

9、sorted

用于對流中的數據排序。

ArrayList<String> dataList = Lists.newArrayList("1", "3", "4", "2", "3");
List<String> transform = dataList.stream()
.sorted(
Comparator.comparingInt(Integer::parseInt)
)
.collect(Collectors.toList());
System.out.println(JSON.toJSONString(transform));
//["1","2","3","3","4"]

最終型操作

10、count

統計元素的個數,不會自動去重。

ArrayList<String> dataList = Lists.newArrayList("1", "3", "4", "2", "3");
long count = dataList.stream().count();
System.out.println(count);
//5

11、max

匹配元素最大值并返回。

ArrayList<String> dataList = Lists.newArrayList("1", "3", "4", "2", "3");
String max = dataList.stream().max(
Comparator.comparing(Integer::parseInt)
).get();
System.out.println(max);
//4

12、min

匹配元素最小值并返回。

ArrayList<String> dataList = Lists.newArrayList("1", "3", "4", "2", "3");
String min = dataList.stream().min(
Comparator.comparing(Integer::parseInt)
).get();
System.out.println(min);
//1

13、findFirst

找到第一個匹配的元素后立即返回。

ArrayList<String> dataList = Lists.newArrayList("1", "3", "4", "2", "3");
String first = dataList.stream().findFirst().get();
System.out.println(first);
//1

14、findAny

找到任何匹配的元素就返回。如果用在一個串行流中,跟findFirst效果一樣。如果用在并行流中,就會比較高效。

int asInt = IntStream.range(1, 10).parallel().findAny().getAsInt();
System.out.println(asInt);
//6

15、anyMatch

用于判斷是否有符合匹配條件的元素。

ArrayList<String> dataList = Lists.newArrayList("1", "3", "4", "2", "3");
boolean match = dataList.stream().anyMatch(
data -> data.equals("3")
);
System.out.println(match);
//true

16、allMatch

用于判斷是否所有元素都符合匹配條件。

ArrayList<String> dataList = Lists.newArrayList("1", "3", "4", "2", "3");
boolean match = dataList.stream().allMatch(
data -> data.equals("3")
);
System.out.println(match);
//false

17、noneMatch

用于判斷是否所有元素都不符合匹配條件。

ArrayList<String> dataList = Lists.newArrayList("1", "3", "4", "2", "3");
boolean match = dataList.stream().noneMatch(
data -> data.equals("3")
);
System.out.println(match);
//false

18、collect

將流轉換為指定的類型,比如List轉換為Set。

ArrayList<String> dataList = Lists.newArrayList("1", "3", "4", "2", "3");
Set<String> collect = dataList.stream().collect(Collectors.toSet());
System.out.println(collect);
//[1, 2, 3, 4]

19、reduce

將元素合并起來,得到一個新值。

int reduce = IntStream.range(0, 10).reduce(0, (v1, v2) -> v1 + v2);
System.out.println(reduce);//45

20、toArray

將流轉換為數組。

ArrayList<String> dataList = Lists.newArrayList("1", "3", "4", "2", "3");
Object[] collect = dataList.stream().toArray();
System.out.println(JSON.toJSONString(collect));
//["1","3","4","2","3"]

21、iterator

將流轉換為一個迭代器。

ArrayList<String> dataList = Lists.newArrayList("1", "3", "4", "2", "3");
Iterator<String> iterator = dataList.stream().iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}

22、foreach

對流中的元素逐個遍歷。

ArrayList<String> dataList = Lists.newArrayList("1", "3", "4", "2", "3");
dataList.stream().forEach(
data -> System.out.println(data)
);
//等同于
dataList.forEach(data-> System.out.println(data));
責任編輯:姜華 來源: 今日頭條
相關推薦

2015-08-04 09:16:20

JavaLambda表達式

2012-07-18 09:45:32

Java 8ScalaLambda

2023-12-24 22:30:05

LambdaJava函數

2020-10-16 10:07:03

Lambda表達式Java8

2012-06-26 10:03:58

JavaJava 8lambda

2013-04-07 15:44:26

Java8Lambda

2013-04-07 10:04:03

Java8Lambda

2014-05-05 09:58:01

2019-12-24 09:49:02

微軟英語瀏覽器

2009-09-09 13:01:33

LINQ Lambda

2009-09-15 15:18:00

Linq Lambda

2022-12-05 09:31:51

接口lambda表達式

2009-09-11 09:48:27

Linq Lambda

2009-08-10 10:06:10

.NET Lambda

2009-08-27 09:44:59

C# Lambda表達

2009-09-15 17:30:00

Linq Lambda

2009-09-17 09:44:54

Linq Lambda

2009-09-17 10:40:22

Linq Lambda

2017-09-06 15:15:48

Python正則表達式

2023-07-31 07:43:07

Java語言表達式變量
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 男女羞羞视频大全 | 人操人人干人 | 欧洲成人| 久久久久久国产精品久久 | 亚洲精品乱码久久久久久按摩 | 伊人青青久久 | 日韩成人中文字幕 | 国产精品自拍视频 | www久久久 | 国产成人精品免高潮在线观看 | www.久| 精品免费av | 在线观看亚| 亚洲精品不卡 | 狠狠色综合久久丁香婷婷 | 亚洲欧美在线视频 | 欧美黄在线观看 | www.av在线| 欧美精品一区二区三区在线四季 | 国产一区中文 | 日韩精品一区二区三区在线观看 | 精品久久久久久久 | aa级毛片毛片免费观看久 | 中文字幕视频一区 | 久久久精品 | 欧美在线一区二区三区 | 一区二区视频在线 | 欧美一区二区三区小说 | 日韩一区av | 波多野吉衣久久 | 色视频在线观看 | 久久亚洲一区 | www精品美女久久久tv | 伊人精品久久久久77777 | 精品乱码一区二区三四区 | 欧美色综合一区二区三区 | 国产精品爱久久久久久久 | 日本三级在线 | 国产在线一区二 | 国产特级毛片 | 亚洲精品字幕 |