专业的编程技术博客社区

网站首页 > 博客文章 正文

Java入门二之Lambda 表达式(java的lambada表达式)

baijin 2024-10-10 04:30:43 博客文章 10 ℃ 0 评论

Lambda表达式是jdk1.8里面的一个重要的更新,这意味着java也开始承认了函数式编程,并且尝试引入其中。

  首先,什么是函数式编程,引用廖雪峰先生的教程里面的解释就是说:函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数!

  简单的来说就是,函数也是一等公民了,在java里面一等公民有变量,对象,那么函数式编程语言里面函数也可以跟变量,对象一样使用了,也就是说函数既可以作为参数,也可以作为返回值了,看一下下面这个例子。

//这是常规的Collections的排序的写法,需要对接口方法重写

public void test1(){

List<String> list =Arrays.asList("aaa","fsa","ser","eere");

Collections.sort(list, new Comparator<String>() {

@Override

public int compare(String o1, String o2) {

return o2.compareTo(o1);

}

});

for (String string : list) {

System.out.println(string);

}

}

//这是带参数类型的Lambda的写法

public void testLamda1(){

List<String> list =Arrays.asList("aaa","fsa","ser","eere");

Collections.sort(list, (Comparator<? super String>) (String a,String b)->{

return b.compareTo(a);

}

);

for (String string : list) {

System.out.println(string);

}

}

//这是不带参数的lambda的写法

public void testLamda2(){

List<String> list =Arrays.asList("aaa","fsa","ser","eere");

Collections.sort(list, (a,b)->b.compareTo(a)

);

for (String string : list) {

System.out.println(string);

}

可以看到不带参数的写法一句话就搞定了排序的问题,所以引入lambda表达式的一个最直观的作用就是大大的简化了代码的开发,像其他一些编程语言Scala,Python等都是支持函数式的写法的。当然,不是所有的接口都可以通过这种方法来调用,只有函数式接口才行,jdk1.8里面定义了好多个函数式接口,我们也可以自己定义一个来调用,下面说一下什么是函数式接口。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表