Java 中的箭头运算符 ->
本文介绍了箭头运算符 (->
) 在 Java 中的作用,并列出了一些示例代码来理解该主题。
在 Java 8 中,增加了一个新特性 lambda 表达式,同时在 Java 中出现了箭头运算符,用于形成 lambda 表达式。它将参数与表达式主体分开。
(parameters) -> {
statements;
} // Lambda expression having arrow
Lambda 表达式是在 Java 8 中引入的,可以用来代替 Java 中的匿名类,使代码更加简洁和可读。
下面是我们如何在 Java 8 之前的 Java 中创建匿名类的示例。
Runnable r = new Runnable() {
@Override
public void run() {
System.out.print("Run method");
}
};
这就是我们如何在 Java 8 中使用 lambda 表达式来实现上述任务。
Runnable r = () -> System.out.print("Run method");
让我们从一些示例开始,以了解 lambda 和箭头运算符的使用。
Java 中箭头运算符的使用
在此示例中,我们使用箭头运算符创建了一个 lambda 表达式,该表达式实现了 Drawable
接口的 draw()
方法。请参考下面的示例。
interface Drawable {
public void draw();
}
public class Main {
public static void main(String[] args) {
int width = 20;
// arrow operator
Drawable d2 = () -> {
System.out.println("Drawing width: " + width);
};
d2.draw();
}
}
输出:
Drawing width: 20
由于 lambda 表达式是使用函数式方法创建简洁代码的一种超级方式,因此我们可以在 Java 代码中以多种方式使用它。让我们看一些我们可以应用它的例子。
Java 集合中的箭头运算符
在此示例中,我们使用 lambda 表达式过滤 ArrayList 数据。我们使用了流 API 和 filter() 方法来获得所需的结果。你会注意到,使用 lambda 创建代码比使用非 lambda 代码更容易。请参考下面的示例。
package javaexample;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
class Product {
int id;
String name;
float price;
public Product(int id, String name, float price) {
this.id = id;
this.name = name;
this.price = price;
}
}
public class Main {
public static void main(String[] args) {
List<Product> list = new ArrayList<Product>();
list.add(new Product(1, "Samsung S5", 17000));
list.add(new Product(3, "Iphone 12", 100500));
list.add(new Product(2, "Sony Xperia", 25000));
// using arrow to filter data
Stream<Product> filtered_data = list.stream().filter(p -> p.price > 17000);
filtered_data.forEach(product -> System.out.println(product.name + ": " + product.price));
}
}
输出:
Iphone 12: 100500.0
Sony Xperia: 25000.0
Java 线程中的箭头运算符
这是 lambda 表达式的另一种用法,我们用它来实现可运行接口的 run()
方法。由于 Runnable 是单个方法接口,因此很容易使用 lambda 表达式。请参考下面的示例。
package javaexample;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
// using arrow
Runnable r = () -> {
System.out.println("Thread is running...");
};
Thread t2 = new Thread(r);
t2.start();
}
}
输出:
Thread is running...
相关文章
Java 中的 volatile 关键字
发布时间:2023/11/13 浏览次数:174 分类:Java
-
本文讨论了 Java 中的 volatile 关键字及其优缺点,并举例说明了如何使用。Java 是一种非常流行的编程语言,通过了解 Java,我们可以很容易地理解它为什么会在编程社区中获得这样的地位。
Java 中的 StringUtils
发布时间:2023/11/13 浏览次数:81 分类:Java
-
本文介绍 Java 中的 StringUtils 类是什么。本文介绍什么是 StringUtils 以及如何在 Java 中使用它来处理字符串。StringUtils 是一个用于处理 String 的类,它提供了比 Java String 类更多的实用方法。
Java 中的 flatMap
发布时间:2023/11/13 浏览次数:132 分类:Java
-
本文介绍 flatMap 以及如何在 Java 中使用它。本文介绍 flatMap 以及如何在 Java 中使用它。flatMap 是 Java 流中的一个操作/函数,用于在执行某些功能性任务后获取新流。在这里,我们将讨论 flatMap
在 Java 中将 Stream 元素转换为映射
发布时间:2023/11/13 浏览次数:77 分类:Java
-
我们将使用 Java 将流元素转换为映射。我们将向你展示如何使用 Collectors.toMap() 从 Java 字符串中提取映射。我们将讨论 Java Streams 的实际用途以及如何将流元素转换为映射元素。
Java 中的 findFirst 流方法
发布时间:2023/11/13 浏览次数:171 分类:Java
-
本教程介绍 Java 中的 findFirst 流方法。java.util.stream API 是在 Java 8 中引入的;它用于处理对象的集合。不同的源(例如数组或集合)可以创建流。
Java 中的 Stream 的 reduce 操作
发布时间:2023/11/13 浏览次数:147 分类:Java
-
本文介绍 Java 中 stream 的 reduce 操作。本文将讨论 reduce() 操作细节并讨论它的一些示例。在讨论 reduce() 操作之前。让我们首先讨论减少。
Java 中的 reflection 是什么
发布时间:2023/11/13 浏览次数:79 分类:Java
-
本文介绍了 reflection 以及如何在 Java 中使用它。本文介绍 reflection 以及如何在 Java 中使用它。Java 有一个 reflection API 特性,它允许我们检查和修改类、接口等。
修复 Java 未解决的编译错误
发布时间:2023/11/13 浏览次数:141 分类:Java
-
本文介绍如何修复 Java 中未解决的编译错误。Java 在三个组件上工作:JVM、JRE 和 JDK。JVM(Java 虚拟机)在物理上并不存在,它提供了运行字节码的环境。
修复 Java cannot be resolved to a variable 错误
发布时间:2023/11/13 浏览次数:64 分类:Java
-
修复 Java cannot be resolved to a variable 错误本指南将教你如何修复 Java 中的 cannot be resolved to a variable 错误。