java基础子Lambda表达式

Lambda表达式可以理解为一段带输入参数的可执行语句块,这种也称语法表达式也称函数式表达。如果代码要完成的计算无法放在一个表达式中,就可以像写方法一样,把这些代码放在 { }中,并包含显式的 return语句(有时需要return,有时不需要,看情况而定)。

Lambda的一个重要作用就是代替内部类

Lambda表达式简化

    1,参数类型可以省略:当编译器可以推测出参数的类型时,可以省略参数类型。
        (name) -> {
            System.out.println(name);
        }
    2,参数只有一个时,可以省略小括号。
        name -> {
            System.out.println(name);
        }
    3,表达式只有一行时,可以省略大括号了结尾的分号。
        name-> System.out.println(name)
    4,-> 后面包含的可以是一个普通的表达式。
        (int a,int b) -> (a*b +2)

Lambda和Stream API

    Stream可以充当Java集合的适配器,使程序能按照操作流的方式来访问集合中的元素。
Stream提供了一组功能强大的操作集合的方法:
    1,filter(Predicate<? super T> predicate) 对集合中的元素进行过滤,返回符合条件的元素的流。filter方法的参数Predicate用来指名过滤条件。
    2,forEach(Consumer<? super T> action) 遍历集合中的元素。
    3,limit(long maxSize)  返回maxSize指定个数的元素。
    4,max(Comparator<? super T> comparator) 根据规则返回最大值
    5,min(Comparator<? super T> comparator) 根据规则返回最小值
    6,sorted() 自然排序
    7,sorted(Comparator<? super T> comparator) 按规则排序
    8,mapToInt(ToIntFunction<? super T> mapper) 把当前的流映射为int类型的流,返回一个IntStream对象,ToIntFunction指定映射方式,ToIntFunction接口中有一个返回值为int的applyAsInt(T value)方法,该方法指定把参数value映射为int类型的方式。
    9,toArray()返回一个数组

方法引用

在lambda表达式中,开发者也可以指定具体的方法。这就是方法的引用。
可能已经有现成的方法可以完成你想要传递到其他代码的某个动作。假设你想对字符串排序,而不考虑字母的大小写。可以传递以下方法。
表达式:Arrays.sort(strs,String::compareToIgnoreCase);

构造函数引用

构造器引用与方法引用很类似,只不过方法名为 new。例如,Person::new是 Person构造器的一个引用。哪一个构造器这取决于上下文。

流的创建:

1,Collection接口的stream方法将任何集合转换为一个流。
2,Stream.of方法可以将一个数组转换为流。
3,Arrays.stream()

想要按照某种方式来转换流中的值,此时使用map方法并传递执行该转换的函数。
Stream<String> stringStream = words.map(String::toLowerCase);
在使用map时,会有一个函数应用到每一个元素上,并且其结果是包含了应用该函数后所产生的所有结果的流。

语法糖

指在计算机语言中添加某种语法,虽然不能显著增加语言的性能,但是可以方便程序员的编程,提供程序的可读性,简化程序,减少程序的出错机会。
如:Lambda表达式,泛形,自动装箱,foreach,可变参数,枚举,断言,switch
上一篇:H5调用手机摄像头和相册


下一篇:ES6基本用法