美文网首页
java学习笔记---lambda表达式

java学习笔记---lambda表达式

作者: Tank_Mao | 来源:发表于2020-09-12 23:12 被阅读0次

首先,看一段代码:

import java.util.Arrays;
import java.util.Comparator;

/**
 * @author Mao Qingbo
 * @date 2020-09-12
 */
class LengthComparator implements Comparator<String> {
    @Override
    public int compare(String first,String second){
        return first.length()-second.length();
    }
}
public class LenCompTest{
    public static void main(String[] args) {
        String [] strings = {"abde","k","bb","dfgag","zzz","yousbbb"};
        LengthComparator lcp = new LengthComparator();
//        Arrays.sort(strings);
        Arrays.sort(strings,lcp);
        System.out.println(Arrays.toString(strings));
    }
}

上述代码是为了将String类型数组按照字符串长度排序,我们的思路是先让LengthComparator类继承Comparator接口,然后将LengthComparator类实例化后传递给sort方法做参数。这句话得仔细的品,不然就会出现懵逼现象。

附上上述代码的运行结果:

[abde, bb, dfgag, k, yousbbb, zzz]

Process finished with exit code 0

可以看出,这样的处理方法没有任何问题。但是,这样做太复杂了,我只是想调用一个接口的方法而已...有没有简单的方法呢?答案是肯定的,那就是Java SE 8 引入的lambda表达式!

看一看用lambda表达式怎么解决这一问题:

import java.util.Arrays;
import java.util.Comparator;

/**
 * @author Mao Qingbo
 * @date 2020-09-12
 */
/*class LengthComparator implements Comparator<String> {
    @Override
    public int compare(String first,String second){
        return first.length()-second.length();
    }
}*/
public class LenCompTest{
    public static void main(String[] args) {
        String [] strings = {"abde","k","bb","dfgag","zzz","yousbbb"};
//        LengthComparator lcp = new LengthComparator();
//        Arrays.sort(strings);
//        Arrays.sort(strings,lcp);
        Arrays.sort(strings,(String first,String second) -> first.length() - second.length());
        System.out.println(Arrays.toString(strings));
    }
}

附上结果:

[abde, bb, dfgag, k, yousbbb, zzz]

Process finished with exit code 0

总结
(1)lambda表达式就是一个代码块,以及必须传入的代码的变量规范。
(2)表达式形式:参数,箭头(->)以及一个表达式。如果代码要完成的计算无法放入一个表达式中,就可以像写方法一样,把这些代码放入{}中,并包含显示的return语句。
(3)即使lambda表达式没有参数,仍然要提供空括号,就像无参方法一样。如果可以推断出一个lambda表达式的参数类型,则可以忽略其类型。
(4)无需指定lambda表达式的返回值类型。lambda表达式的返回类型总是由上下文推导得出。

相关文章

网友评论

      本文标题:java学习笔记---lambda表达式

      本文链接:https://www.haomeiwen.com/subject/fphgektx.html