作为一个前端同学,今天惊叹的发现,原来 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));
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表达式
Runnable runnableLambda = () -> System.out.println("Hello, Lambda!");
// 箭头函数
const greet = () => console.log("Hello, Arrow Function!");
基本就是箭头的样式不一样
代码简洁
Lambda表达式让代码变得更加紧凑,消除了冗长的语法,提高了代码的可读性。
增强可读性
函数式编程强调表达式的含义,Lambda表达式使得代码逻辑更为清晰,提高可读性。
更灵活的编程方式
Lambda表达式支持函数作为一等公民,使得高阶函数的编写变得更为灵活。