原创转载请注明出处:http://agilestyle.iteye.com/blog/2424768
Consumer
Consumer是从T到void的一元函数,接受一个入参但不返回任何结果的操作
e.g.
package org.fool.java8; import java.util.Arrays; import java.util.List; import java.util.function.BiConsumer; import java.util.function.Consumer; public class ConsumerTest { private static class Person { private String name; private Integer age; public Person(String name, Integer age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } } private static void consumer(List<Person> persons, Consumer<Person> consumer) { for (Person person : persons) { consumer.accept(person); } } private static void biConsumer(String prefix, List<Person> persons, BiConsumer<String, Person> consumer) { for (Person person : persons) { consumer.accept(prefix, person); } } public static void main(String[] args) { List<Person> list = Arrays.asList( new Person("zhangsan", 18), new Person("lisi", 28)); consumer(list, System.out::println); biConsumer("HR: ", list, (prefix, person) -> System.out.println(prefix + person)); biConsumer("IT: ", list, (prefix, person) -> System.out.println(prefix + person)); } }
Console Output
Person{name='zhangsan', age=18} Person{name='lisi', age=28} HR: Person{name='zhangsan', age=18} HR: Person{name='lisi', age=28} IT: Person{name='zhangsan', age=18} IT: Person{name='lisi', age=28}
相关推荐
本项目"java8-lambda-expression-demo"就是为了让开发者深入理解并实践这些新特性。 Lambda表达式允许我们以一种更简洁的方式定义匿名函数,即没有名字的函数。这种表达式的形式是`()->{主体代码}`,其中箭头左侧...
1. 函数式接口:理解并使用Java提供的标准函数式接口,如`Function`, `Predicate`, `Consumer`等,以及如何自定义函数式接口。 2. Lambda表达式转换:学习如何将Lambda表达式转换为等价的传统匿名内部类,这对于...
4. 使用`Consumer`接口执行操作,但不返回结果,例如打印列表元素。 5. 使用`Supplier`接口创建新的对象,不接受参数,但返回一个值。 6. `Stream API`结合Lambda表达式进行数据处理,如`map`, `filter`, `reduce`等...
其基本语法格式为:(parameters) -> expression,其中parameters是输入参数(可选),expression是函数体。例如,一个简单的Lambda表达式 `(int a, int b) -> a + b` 表示接受两个整数并返回它们的和。 二、Lambda...
此外,Java 8 提供了一系列内置的函数式接口,如 `Consumer`(无返回值,只执行操作)、`Function`(将一个对象转换成另一个对象)和 `Supplier`(提供一个值,无需输入参数)。这些接口与 Stream API 结合使用,...
- 使用Consumer接口进行消费操作,如打印元素信息。 "方法引用"是Lambda表达式的延伸,它允许我们直接引用已有方法,而不是手动编写相同的逻辑。比如,`Arrays.sort(arr, Integer::compareTo)`,这里的`Integer::...
Java标准库提供了一系列这样的接口,如`Runnable`, `Comparator`, `Predicate`, `Consumer`等,方便我们在不同场景下使用Lambda。 2. 省略参数类型:在Lambda表达式中,如果参数类型可以从上下文中推断出来,那么...
在 `lambda_expression-master` 文件中,可能包含了更多关于 Lambda 使用示例、实践案例以及如何在实际项目中有效利用 Lambda 进行编程的详细资料。通过学习和实践,你可以更好地理解和应用这一强大的功能。
Runnable r2 = () -> System.out.println("Running with Lambda expression"); ``` 总结,Lambda 表达式是 Java 8 中的一项重要改进,它让代码更简洁、易读,尤其在处理集合、并发和流操作时。通过熟练掌握 Lambda ...
Thread thread2 = new Thread(() -> System.out.println("Hello from Lambda expression")); ``` #### 3、Lambda表达式 六种语法格式 Lambda表达式的语法非常灵活,以下列举了Lambda表达式的六种基本语法格式: #...
其语法形式为 `(parameters) -> expression` 或 `(parameters) -> { statements }`。参数列表在括号内,箭头后是函数体,可以是单行表达式或多行语句块。 二、函数式接口 Lambda表达式与函数式接口密切相关。函数式...
(parameters) -> expression 或 (parameters) -> { statements; } ``` 1. 参数列表:类似于方法签名,无需类型声明,因为类型可以从上下文中推断出来。 2. 箭头符号:分隔参数列表和函数体。 3. 函数体:如果只有一...
Lambda表达式可以与`Predicate`(用于过滤)、`Function`(用于映射)和`Consumer`(用于消费)等接口结合,实现数据处理的链式操作。 例如,以下代码展示了如何使用Lambda表达式和Stream API来找出一个整数列表中...
Lambda表达式的基本语法是`(parameters) -> expression`,其中`parameters`代表参数列表,`->`是箭头符号,`expression`是函数体。Lambda表达式可以直接嵌入到方法调用中,无需声明一个完整的类。下面是使用Lambda...
在Java 8之后,许多新的函数式接口被引入,如`Predicate`, `Function`, `Consumer`等,它们都是Stream API的重要组成部分。 **17.1.3 Stream API** Stream API是Java 8的另一大特性,它提供了处理集合数据的新方式...
Lambda表达式的语法格式为:`(parameters) -> expression`或`(parameters) -> { statements; }`。其中,parameters是参数列表,->是箭头符号,expression是单行表达式,{ statements; }是多行语句体。 Lambda表达式...
在上面的例子中,`forEach`方法接受一个`Consumer<String>`,Lambda表达式`(name -> System.out.println(name))`就是这个Consumer的具体实现。 Lambda表达式也可以用于对集合进行排序,如`Comparator<T>`接口: ``...
4. **函数式接口**:Java 8提供了一些内置的函数式接口,如Runnable、Consumer、Function等,Lambda表达式可以直接转换为这些接口的实例。在火车票系统中,可能会定义自定义的函数式接口来表示特定的业务逻辑,如...
Lambda表达式的核心是函数式接口,常见的函数式接口有`Consumer<T>`(消费型接口)、`Supplier<T>`(供应型接口)、`Function,R>`(函数型接口)和`Predicate<T>`(断言型接口)等。这些接口在Java 8的`java.util....