Java函数编程是指使用函数作为参数,或使用函数作为返回值的编程方法。
一、Lambda表达式 {#title-1}
Java8引入了Lambda表达式,可以使用函数作为方法参数或返回值。Lambda表达式也可视为匿名函数。
() -> System.out.println("Hello Lambda!")
上述Lambda表达式等同于以下匿名类。
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Hello Lambda!");
}
}).start();
二、方法引用 {#title-2}
方法引用是Java8的另一个重要特征,即直接引用现有方法。它可以大大提高代码的可读性和简洁性。
Listlist = Arrays.asList("Java", "C++", "Python", "JavaScript");
list.forEach(System.out::println);
上述代码就使用了方法引用,System.out::println等价于item -> System.out.println(item)。
三、函数式接口 {#title-3}
通过@FunctionalInterface注释,函数接口是一个只有一种抽象方法的接口。在Java8中,可以通过函数接口接收Lambda表达式和方法引用。
@FunctionalInterface
public interface MyInterface {
void doSomething();
}
这个接口可以通过Lambda来实现。
MyInterface myInterface = () -> System.out.println("Do something");
myInterface.doSomething(); // 输出:Do something
四、流 {#title-4}
流(Stream)它是Java8中的一个重要概念,指的是在操作集合时,不是直接操作集合,而是计算流量操作,使操作更容易理解,效率更高。
Listwords = Arrays.asList("Java", "C++", "Python", "JavaScript");
long count = words.stream().filter(w -> w.length() > 2).count();
System.out.println(count); // 输出:4
首先创建了一个流,然后对流进行过滤和计数。