我就廢話不多說了,大家還是直接看代碼吧~
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
@Test void testJava8ForeachMap() { Map<String, Integer> items = new HashMap<>(); items.put( "A" , 10 ); items.put( "B" , 20 ); items.put( "C" , 30 ); items.put( "D" , 40 ); items.put( "E" , 50 ); items.put( "F" , 60 ); //普通方式遍歷Map for (Map.Entry<String, Integer> entry:items.entrySet()){ System.out.println(entry.getKey()+ ":" +entry.getValue()); } System.out.println( "===================" ); //java8 foreach + 拉姆達表達式遍歷Map items.forEach((k, v) -> { System.out.println(k+ ":" +v); }); } @Test void testJava8ForeachList() { List<String> items = new ArrayList<>(); items.add( "A" ); items.add( "B" ); items.add( "C" ); items.add( "D" ); items.add( "E" ); //普通寫法遍歷List for (String item:items){ System.out.println(item); } System.out.println( "單獨的 forEach 寫法==========" ); //單獨的 forEach 寫法 Consumer consumer = new Consumer<String>() { @Override public void accept(String s) { System.out.println(s); } }; items.forEach(consumer); System.out.println( "forEach結合Lambda寫法==========" ); //輸出 A,B,C,D,E items.forEach(s -> { System.out.println(s); }); System.out.println( "forEach結合Lambda寫法,添加過濾條件==========" ); //輸出 C items.forEach((s) -> { if ( "C" .equals(s)){ System.out.println(s); } }); } |
補充知識:java8 lambda表達式之map和foreach的區別
看 一段代碼:
1
2
3
4
5
6
7
8
9
|
List<String> list = new ArrayList<>(); list.add( "a" ); list.add( "c" ); list.add( "s" ); list.add( "b" ); list.add( "f" ); list.forEach(s -> { System.out.println(args.getClass().getTypeName()); }); |
輸出結果:
1
2
3
4
5
|
java.lang.String[] java.lang.String[] java.lang.String[] java.lang.String[] java.lang.String[] |
再看map操作符
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
List<String> list = new ArrayList<>(); list.add( "1" ); list.add( "2" ); list.add( "3" ); list.add( "4" ); list.add( "5" ); List<Integer> list1 = list.stream().map(s -> { Integer a = Integer.parseInt(s); a = a+ 1 ; System.out.println(a.getClass().getTypeName()); return a; }).collect(Collectors.toList()); System.out.println(list); System.out.println(list1); |
輸出結果:
1
2
3
4
5
6
7
|
java.lang.Integer java.lang.Integer java.lang.Integer java.lang.Integer java.lang.Integer [ 1 , 2 , 3 , 4 , 5 ] [ 2 , 3 , 4 , 5 , 6 ] |
map對原來的集合操作后返回一個新的集合。此集合和原集合無任何關系,且不會改變原集合的任何東西
foreach操作的是原集合,返回的還是原集合
以上這篇java8 forEach結合Lambda表達式遍歷 List操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/xldmx/article/details/107990782