Lambda在Java8中的简单使用

Lambda表达式可以说是Java 8最大的卖点,她将函数式编程引入了Java。Lambda允许把函数作为一个方法的参数,或者把代码看成数据。


1.Lambda表达式

Lambda表达式可以说是Java 8最大的卖点,她将函数式编程引入了Java。Lambda允许把函数作为一个方法的参数,或者把代码看成数据。

一个Lambda表达式可以由用逗号分隔的参数列表、–>符号与函数体三部分表示。例如:

1
s-> System.out.println(s);

2.简单遍历

1
2
3
4
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7,7, 8);
for(Integer i:list){
System.out.println(i);
}

以上代码可以改写成下面代码达到相同的结果。

1
2
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7,7, 8);
list.forEach(s-> System.out.println(s));

3.添加if语句遍历

1
2
3
4
5
6
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7,7, 8);
for (Integer i : list) {
if (i > 5) {
System.out.println(i);
}
}

以上代码可以改写成下面代码达到相同的结果。

1
2
3
4
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7,7, 8);
list.stream()
.filter(s->s>5)
.forEach(s -> System.out.println(s));

4.进行信息的统计。

统计List中数字的个数:

1
2
3
4
5
6
7
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 7, 8);
Map<Integer, Integer> map = new HashMap<>();
for (Integer i : list) {
int sum = map.getOrDefault(i, 0);
sum++;
map.put(i, sum);
};

以上代码可以改写成下面代码达到相同的结果。

1
2
3
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 7, 8);
Map<Integer, Integer> map = list.parallelStream()
.collect(Collectors.groupingBy(s -> s.intValue(), Collectors.summingInt(p -> 1)));

如果是统计大于5的,价格对应的filter即可。

1
2
3
4
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 7, 8);
Map<Integer, Integer> map = list.parallelStream()
.filter(s -> s > 5)
.collect(Collectors.groupingBy(s -> s.intValue(), Collectors.summingInt(p -> 1)));

可以对上述结果进行打印查看

1
map.forEach((x, y) -> System.out.println(x + "--" + y));

5.其他

里面有好多其它函数,排序、求和、最大值、最小值、取前几个等,自己去探索吧!
这篇博文讲得比较详细。有兴趣可以具体看。
http://www.cnblogs.com/franson-2016/p/5593080.html