java8 forEach结合Lambda表达式遍历 List操作

时间:2021-07-10 08:04:55

我就废话不多说了,大家还是直接看代码吧~

?
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