java:Lambda函数式编程
2023-12-18 20:03:27
作为一个前端同学,今天惊叹的发现,原来 java 也可以使用函数式编程,赶紧来看看怎么玩
简介
当Java 8引入Lambda表达式和函数式编程特性时,它开启了一个全新的编程范式。这些功能使得Java语言更加现代、灵活,并支持更为函数式的编程方式。在这篇博客中,我们将深入探讨Java中的Lambda表达式和函数式编程。
语法
(parameters) -> expression
parameters表示参数列表,expression表示表达式。你要是前端的话看一眼就懂了,接下来我整一些示例给大家看看
示例:简单
hello world
new Thread(() -> System.out.println("Hello, Lambda!")).start();
相加
// 自定义函数式接口
interface MyFunction {
void apply(int x, int y);
}
// 使用Lambda表达式实现
MyFunction add = (x, y) -> System.out.println("Sum: " + (x + y));
示例:筛选年龄大于 25 的人员
import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
class Scratch {
public static void main(String[] args) {
List<Person> people = new ArrayList<>();
people.add(new Person("Alice", 25));
people.add(new Person("Bob", 30));
people.add(new Person("Charlie", 22));
people.add(new Person("David", 35));
// 使用 Lambda 表达式筛选年龄大于 25 的人员
List<Person> filteredList = filterPeople(people, person -> person.getAge() > 25);
System.out.println(filteredList);
}
// 使用函数式接口 Predicate 进行筛选
private static List<Person> filterPeople(List<Person> people, Predicate<Person> predicate) {
List<Person> filteredList = new ArrayList<>();
for (Person person : people) {
if (predicate.test(person)) {
filteredList.add(person);
}
}
return filteredList;
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
结果
[Person{name='Bob', age=30}, Person{name='David', age=35}]
Lambda表达式与前端箭头函数的对比
// Lambda表达式
Runnable runnableLambda = () -> System.out.println("Hello, Lambda!");
// 箭头函数
const greet = () => console.log("Hello, Arrow Function!");
基本就是箭头的样式不一样
函数式编程的优势
-
代码简洁
Lambda表达式让代码变得更加紧凑,消除了冗长的语法,提高了代码的可读性。 -
增强可读性
函数式编程强调表达式的含义,Lambda表达式使得代码逻辑更为清晰,提高可读性。 -
更灵活的编程方式
Lambda表达式支持函数作为一等公民,使得高阶函数的编写变得更为灵活。
文章来源:https://blog.csdn.net/weixin_43972437/article/details/135068804
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!