找到关于 Java 8 的4330 篇文章

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

raja
更新于 2020年7月13日 05:32:03

6K+ 次查看

Callable 接口定义在 java.util.concurrent 包中。与只能运行线程的 Runnable 接口相反,Callable 对象返回由线程完成的计算结果。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年7月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年7月11日 12:53:39

550 次查看

方法引用是 lambda 表达式的简化形式,可以执行一个方法。它可以使用 "::" 符号来描述。对特定对象的实例方法的引用是指绑定到接收器的非静态方法。语法 对象引用::实例方法名 示例 - 1 import 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年7月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年7月11日 12:50:17

300 次查看

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

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

raja
更新于 2020年7月11日 12:48:49

1K+ 次查看

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

如何在 Java 中使用带有 lambda 表达式的 Stream API 对集合进行排序?

raja
更新于 2020年7月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年7月11日 12:43:42

3K+ 次查看

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

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

raja
更新于 2020年7月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年7月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 ... 阅读更多

广告