`

Java8新特性 - Lambda表达式 - Functional Interfaces

 
阅读更多
Mapper.java
package corejava8.lambda;

@FunctionalInterface
public interface Mapper<T> {
	// An abstract method
	int map(T source);

	// A generic static method
	public static <U> int[] mapToInt(U[] list, Mapper<? super U> mapper) {
		int[] mappedValues = new int[list.length];
		for (int i = 0; i < list.length; i++) {
			// Map the object to an int
			mappedValues[i] = mapper.map(list[i]);
		}
		return mappedValues;
	}
}


MapperTest.java
package corejava8.lambda;

public class MapperTest {
	public static void main(String[] args) {
		// Map names using their length
		System.out.println("Mapping names to their lengths:");
		String[] names = { "David", "Li", "Doug" };
		int[] lengthMapping = Mapper.mapToInt(names,
				(String name) -> name.length());
		printMapping(names, lengthMapping);
		System.out.println("\nMapping integers to their squares:");
		Integer[] numbers = { 7, 3, 67 };
		int[] countMapping = Mapper.mapToInt(numbers, (Integer n) -> n * n);
		printMapping(numbers, countMapping);
	}

	public static void printMapping(Object[] from, int[] to) {
		for (int i = 0; i < from.length; i++) {
			System.out.println(from[i] + " mapped to " + to[i]);
		}
	}
}


运行结果:
Mapping names to their lengths:
David mapped to 5
Li mapped to 2
Doug mapped to 4

Mapping integers to their squares:
7 mapped to 49
3 mapped to 9
67 mapped to 4489
分享到:
评论

相关推荐

    Functional Interfaces in Java.pdf

    它们是Java 8及后续版本中引入的一个重要的新特性,允许将函数作为参数传递给方法,或者将方法作为值存储在变量中。函数式接口是Lambda表达式的基础,通过Lambda表达式可以为接口的抽象方法提供实现,使得代码更加...

    Java in easy steps Covers Java 9 6th Edition

    整体而言,Java 8的Lambda表达式和流(Streams)为Java带来了强大的函数式编程能力,这些新特性极大地扩展了Java语言的表达能力,并为开发者提供了更加灵活和高效的方式来编写代码。《Java in easy steps》的目的是...

    Java 8特性教程

    接下来,我们将详细解读Java 8中的几个核心新特性,并通过实例加以说明。 1. 默认接口方法(Default Interface Methods) Java 8允许开发者在接口中定义具体的方法实现,而不是仅仅局限于抽象方法。通过使用default...

    java8新特性总结自用

    ### Java 8 新特性详解 #### 一、接口的默认方法(Default Methods for Interfaces) Java 8 引入了一个重要的概念——默认方法,默认方法允许在接口中定义具体的方法实现,而不需要强制所有实现该接口的类都重写...

    Lambda表达式最佳实践

    Lambda表达式是Java 8引入的一种强大的编程概念,它使得函数式编程风格在Java中变得更加便捷。以下是一些在实际应用中使用Lambda表达式时的最佳实践: 1. **优先使用标准Functional接口**: Java在`java.util....

    JAVA8简明教程.pdf

    除了Lambda表达式,Java 8还引入了方法引用,它允许我们直接引用一个已经存在的方法,而不是通过Lambda表达式重新定义。例如,`Collections.sort()`方法可以使用`String::compareTo`方法引用,使代码更为简洁。 ...

    java8.pdf详细说明java8的使用说明

    Java 8是Java语言的一次重要更新,它引入了大量新特性以及API的改进,旨在提高Java开发者的生产力。以下是对Java 8新特性的详细知识点: 1. 默认接口方法(Default Interface Methods): Java 8允许在接口中使用...

    java类源码-lambda:学习java.util,java.util.function,java.util.stream下面的源码,只要上

    这次我们将会深入学习 `java.util`、`java.util.function` 和 `java.util.stream` 这三个包下的源码,来理解这些新特性的实现原理和设计思想。 首先,Lambda 表达式是函数式编程的核心概念,它提供了一种简洁的方式...

    java_jdk8源码

    - JDK8引入了Lambda表达式,这是一种简洁的匿名函数表示形式,它简化了函数式编程。源码中可以看到编译器如何将Lambda转换为Java方法接口的实例。 4. **函数式接口(Functional Interfaces)** - 如Runnable、...

    JAVA学习视频之Java8面向对象编程(1)

    2. **函数式接口(Functional Interfaces)**:为了支持lambda表达式,Java 8引入了函数式接口的概念。这些接口只有一个抽象方法,例如`Runnable`, `Callable` 和新添加的`Supplier`, `Consumer`, `Function`等。...

    详解Java的闭包

    Lambda 表达式是 Java 8 引入的一项重要特性,它提供了一种简洁的方式来表示没有名字的函数。Lambda 表达式的语法如下: `(parameters) -&gt; expression` 这里,`parameters` 是输入参数列表,`expression` 是函数体...

    高清彩版 Modern Java in Action

    《Modern Java in Action》是一本详细介绍Java 8及后续版本中引入的新特性和编程范式的权威指南。本书由Raoul-Gabriel Urma、Mario Fusco和Alan Mycroft三位专家共同编写,通过丰富的示例代码和实践案例,帮助读者...

    jdk 1.8 64位 官方正式版下载

    3. 编程实践:开发者可以开始利用Java 8的新特性编写代码,如使用Lambda表达式、Stream API以及新日期时间API等。 总之,JDK 1.8的64位官方正式版是一个重要的Java开发工具,其引入的诸多新特性极大地提高了开发...

    java8看不到源码-java8:java8

    java8 看不到源码335 的 Java8 演示 用法 这是一个eclipse项目,我曾经讲过Java 8的一些特性。这个项目中有两个包,notDone和done,notdone有pre java 8的代码,done有Java 8的代码。 当此代码用于讲座代码时,两个...

    java面试题+答案整理

    7. **Java 8及以后的新特性**: - Lambda表达式简化了函数式编程,Stream API提供了集合处理的新方式,Optional类用于更安全地处理null值。 - 并行流(Parallel Stream)利用多核处理器提高计算效率。 - Method ...

    mxs-2021:Max Java 8版本

    Lambda表达式是Java 8最具代表性的新特性,它允许开发者用更简洁的方式表示匿名函数。这种表达式可以被用来替代那些只使用一次的方法,特别是作为参数传递给方法或者存储在变量中。Lambda表达式的语法结构为 `...

    Java8深入学习系列(三)你可能忽略了的新特性

    10. **函数式接口(Functional Interfaces)**:Java 8引入了`@FunctionalInterface`注解,用于标识只包含一个抽象方法的接口,这是Lambda表达式的基础。 这些新特性共同构建了Java 8的核心价值,提高了Java作为...

    24小时掌握Java编程(英文)

    - **Java EE 7新特性**: Java EE 7版本的主要改进与新增功能。 - **模块化与可扩展性**: Java EE 7如何提供更好的模块化支持。 - **微服务架构**: 如何使用Java EE 7构建微服务应用。 **LESSON33: Working with ...

Global site tag (gtag.js) - Google Analytics