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 中的 >> 运算符
发布时间:2023/12/17 浏览次数:187 分类:Java
-
本文你将了解 Java 中的 >> 运算符。本指南将介绍 Java 中的 >> 运算符。要理解这个概念,你需要熟悉一些较低级别的计算概念。例如,位、字节等等。让我们深入了解一下。
Java Not InstanceOf
发布时间:2023/12/17 浏览次数:156 分类:Java
-
本教程演示如何在 Java 中否定 instanceof 关键字。InstanceOf 关键字检查引用变量是否包含给定的对象引用类型。它返回布尔类型,所以我们也可以否定它们。
Java 中的类字段和实例字段
发布时间:2023/11/28 浏览次数:98 分类:Java
-
在本文中,你将学习一些 Java 术语,它们是局部变量、输入参数、类字段和实例字段。我们还将讨论 Java 中实例字段的一些属性。
Java 中的类文件编辑器
发布时间:2023/11/28 浏览次数:194 分类:Java
-
本文展示了如何使用 Java 类文件来编辑类文件。在本文中,我们将讨论 Java 类文件编辑器,这是一个用 Java 创建的工具,用于编辑 Java 编译的类。我们可以在创建 Java 类后对其进行反编译并查看
Java 中的_JAVA_OPTIONS 环境变量
发布时间:2023/11/28 浏览次数:169 分类:Java
-
在本文中,我们将讨论 Java 选项和 _JAVA_OPTIONS 环境变量,它的后续 JAVA_TOOL_OPTIONS 和 JDK_JAVA_OPTIONS。
如何在 Java 中清除控制台
发布时间:2023/11/28 浏览次数:135 分类:Java
-
它展示了在 Java 中清理控制台屏幕的两种方法。在本教程中,我们将看一下在 Java 中清理控制台屏幕的两种方法。我们将通过实例来学习如何在运行时执行 Java 清屏命令。
如何在 Java 中从控制台获取输入
发布时间:2023/11/28 浏览次数:164 分类:Java
-
本教程展示了 Scanner 类中包含的读取控制台输入的各种功能。在本教程中,我们将查看 Java 中的 Scanner 类,并学习如何使用该类从控制台读取输入。Scanner 类来自于 Java 包 java.util.Scanner。
Java 中的 console.log
发布时间:2023/11/28 浏览次数:181 分类:Java
-
本文介绍 Java 中的 console.log。本教程介绍 Java 中的 console.log() 函数以及如何在 Java 中将日志显示到控制台。console.log() 是 JavaScript 的一个函数,用于向浏览器控制台显示日志消息。
Java 更改日期格式
发布时间:2023/11/28 浏览次数:166 分类:Java
-
本文介绍如何在 Java 中更改日期格式 有多种选项可用于将日期字符串转换为日期格式。下面提到的方法可以带来所需的结果。让我们从下面的代码块中了解各种方式。