1.主体结构
Lambda 表达式拆分成两部分 :
左侧 : Lambda 表达式的参数列表;
右侧 : Lambda 表达式中所需执行的功能, 即 Lambda 表达式;
2.基本语法
(参数) -> Lambda 表达式
3.使用场景
3.1 foreach遍历list集合
String[] name={"喵星人","铲*官"};
List<String> list = Arrays.asList(name);
//循环遍历
for (String s : list) {
System.out.println(s);
}
//lambda表达式
list.forEach((s)-> System.out.println(s));
3.2 使用Lambda排序
String[] names = {"小安妮", "提伯斯", "阿木木"};
//升序排序
//匿名内部类排序
Arrays.sort(names, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return -1;
}
});
//lambda表达式排序
Arrays.sort(names, (String o1, String o2) -> (-1));
3.3 lambda表达式实现map
List<Double> list = Arrays.asList(10.0, 20.0, 30.0);
Stream<Double> doubleStream = list.stream().map(x -> x + x * 0.05);
doubleStream.forEach(x -> System.out.println(x));
3.4 lambda表达式实现reduce
map的作用是将一个对象变为另外一个,而reduce实现的则是将所有值合并为一个
List<Double> list = Arrays.asList(10.0, 20.0, 30.0);
Stream<Double> doubleStream = list.stream().map(x -> x + x * 0.05);
Double result = doubleStream.reduce((sum, x) -> sum + x).get();
System.out.println(result);
3.5 filter过滤相关的操作
List<Double> list = Arrays.asList(10.0, 20.0, 30.0);
List<Double> collect = list.stream().filter(x -> x > 10.0).collect(Collectors.toList());
collect.forEach(s -> System.out.println(s));
3.6 Predicate接口配合
@Test
public void testPredicate() {
List<String> strings = Arrays.asList("Java", "Python", "Shell");
filter(strings,s->true);
}
public static void filter(List<String> list, java.util.function.Predicate<String> condition){
list.stream().filter(s -> condition.test(s)).forEach(s -> System.out.println(s));
}