找到 4330 篇文章 关于 Java 8

如何在 Java 中将 Callable 写成 Lambda 表达式?

raja
更新于 2020-07-13 05:32:03

6K+ 浏览量

Callable 接口定义在 java.util.concurrent 包中。Callable 的对象返回由线程完成的计算结果,这与 Runnable 接口形成对比,Runnable 接口只能运行线程。Callable 对象返回 Future 对象,该对象提供方法来监控由线程执行的任务的进度。Future 对象用于检查 Callable 接口的状态,并在线程完成时从 Callable 中检索结果。在下面的示例中,我们可以将 Callable 接口写成 Lambda 表达式。示例import java.util.concurrent.*; public class LambdaCallableTest {    public static void main(String args[]) throws InterruptedException {       ExecutorService executor = Executors.newSingleThreadExecutor();   ... 阅读更多

什么是 Java 中的 SAM 接口?

raja
更新于 2020-07-13 05:26:06

5K+ 浏览量

只有一个抽象方法的接口称为函数式接口,也称为单抽象方法接口 (SAM 接口)。一个抽象方法意味着允许默认方法或抽象方法,其实现默认可用。SAM 接口的实例有 java.lang.Runnable、java.awt.event.ActionListener、java.util.Comparator 和 java.util.concurrent.Callable。SAM 接口可以使用 lambda 表达式或方法引用来实现。语法@FunctionalInterface public interface Changeable {  public void change(T o); }示例@FunctionalInterface interface MyInterface {    String reverse(String n); } public class LambdaReverseTest {    public static void main( String[] args ) {       MyInterface myInterface = (str) -> { // ... 阅读更多

如何在 Java 中实现对特定对象的实例方法的引用?

raja
更新于 2020-07-11 12:53:39

550 浏览量

方法引用是 lambda 表达式的简化形式,可以执行一个方法。它可以使用 "::" 符号来描述。对特定对象的实例方法的引用是指绑定到接收者的非静态方法。语法对象引用::实例方法名示例 - 1import java.util.*; public class InstanceMethodReferenceTest1 {    public static void main(String[] args) {       String[] stringArray = { "India", "Australia", "England", "Newzealand", "SouthAfrica", "Bangladesh", "WestIndies", "Zimbabwe" };       Arrays.sort(stringArray, String::compareToIgnoreCase);       System.out.println(Arrays.toString(stringArray));    } }输出[Australia, Bangladesh, England, India, Newzealand, SouthAfrica, WestIndies, Zimbabwe]示例 - 2@FunctionalInterface interface Operation {    public int average(int ... 阅读更多

Java 中方法引用和构造函数引用之间的区别?

raja
更新于 2020-07-11 12:54:44

2K+ 浏览量

方法引用类似于 lambda 表达式,用于引用方法而不调用它,而构造函数引用用于引用构造函数而不实例化命名类。方法引用需要与 lambda 表达式类似的目标类型。但它们不是提供方法的实现,而是引用现有类或对象的方法,而构造函数引用为类中的不同构造函数提供不同的名称。语法 - 方法引用::示例import java.util.*; public class MethodReferenceTest {    public static void main(String[] args) {       List names = new ArrayList();       List selectedNames = new ArrayList();     ... 阅读更多

Java 中 lambda 表达式中形式参数的规则是什么?

raja
更新于 2020-07-11 12:50:17

300 浏览量

lambda 表达式类似于具有参数、主体和返回类型的方法。它也可以称为匿名函数(没有名称的方法)。在 lambda 表达式中使用形式参数时,我们需要遵循一些规则。如果函数式接口的抽象方法是零参数方法,则箭头 (->) 的左侧必须使用空括号。如果函数式接口的抽象方法是一个参数方法,则括号不是必需的。如果函数式接口的抽象方法是多个参数方法,则括号是必需的。形式参数用逗号分隔,并且可以与... 阅读更多

Java 中 lambda 表达式主体的规则是什么?

raja
更新于 2020-07-11 12:48:49

1K+ 浏览量

lambda 表达式是作为参数传递给另一个函数的匿名函数(无名函数)。在使用 lambda 表达式的正文时,我们需要遵循一些规则。lambda 表达式正文的规则lambda 表达式的正文可以是单个表达式或多个语句。如果我们使用单个表达式作为 lambda 表达式的正文,则无需用花括号 ({}) 将正文括起来。如果我们使用一个或多个语句作为 lambda 表达式的正文,则必须将它们括在花括号 ({}) 中。语法(参数) 或 () -> {用分号分隔的语句体} 或单个语句示例接口 Message {   ... 阅读更多

如何在 Java 中使用 Stream API 和 lambda 对集合进行排序?

raja
更新于 2020-07-11 12:43:12

435 浏览量

Stream API 是在 Java 中实现函数式编程的强大方法。它通常与 lambda 表达式结合使用,并提供了一种有效的方式来执行数据操作操作,如排序、过滤、映射、归约等。在下面的示例中,我们可以使用 Stream API 对集合进行排序。它通过使用 Comparator 接口的 sorted() 方法提供排序逻辑。如果我们有两个 Comparator 接口实例,并且需要根据复合条件(根据第一个比较器,然后根据第二个比较器)进行排序,我们可以通过在第一个实例上调用 thenComparing() 方法并将第二个实例传递进来,来使用这两个比较器。示例import java.util.*; import java.util.stream.*; ... 阅读更多

为什么我们在 Java 中使用 lambda 表达式?

raja
更新于 2020-07-11 12:43:42

3K+ 浏览量

lambda 表达式可以通过定义可以作为参数传递给某些方法的匿名函数来实现函数式接口。启用函数式编程:所有新的基于 JVM 的语言都利用其应用程序中的函数式范式,但程序员被迫使用面向对象编程 (OOPS),直到 lambda 表达式出现。因此,lambda 表达式使我们能够编写函数式代码。可读且简洁的代码:人们已经开始使用 lambda 表达式,并报告说它可以帮助从他们的代码中删除大量行。易于使用的 API 和库:使用 lambda 表达式设计的 API 更易于使用并支持其他 API。启用支持... 阅读更多

Predicate 接口在 Java 中 lambda 表达式中的重要性?

raja
更新于 2020-07-11 12:38:14

2K+ 浏览量

谓词(Predicate)是一个通用的函数式接口,表示一个接受单个参数并返回布尔值(true 或 false)的函数。此接口位于 java.util.function 包中,并包含一个 test(T t) 方法,用于评估给定参数的谓词。语法public interface Predicate {  boolean test(T t); }示例import java.util.*; import java.util.function.Predicate; public class LambdaPredicateTest {    public static void main(String args[]) {       Employee emp1 = new Employee("Raja", 26);       Employee emp2 = new Employee("Jaidev", 24);       Employee emp3 = new Employee("Adithya", 30);       List empList = new ArrayList();       empList.add(emp1);       empList.add(emp2); ... 阅读更多

如何在 Java 中使用方法引用查找集合中的最大值?

raja
更新于 2020-07-11 12:29:58

177 次浏览

方法引用在 Lambda 表达式中提供了一种无需执行即可引用方法的方式。它需要一个目标类型上下文,该上下文包含一个兼容的函数式接口。语法 :: 在下面的示例中,我们可以使用方法引用找出 ArrayList 的最大值。示例import java.util.*; class MyClass {    private int val;    MyClass(int v) {       val = v;    }    int getVal() {       return val;    } } public class MethodReferenceMaxValueTest {    static int compareMaxValue(MyClass a, MyClass b) {       return a.getVal() - b.getVal();    }    public ... 阅读更多

广告