java8 biconsumer接口_jdk8-Consumer相关函数式接口

本文介绍了Java 8中的Consumer接口及其使用,包括`accept`方法和`andThen`方法的链式操作。同时,详细讲解了BiConsumer接口,用于消费两个参数,并展示了不同原始类型实现的示例。最后,通过一个完整示例展示了Consumer接口的常用应用。
摘要由CSDN通过智能技术生成

Consumer的作用是给定义一个参数,对其进行(消费)处理,处理的方式可以是任意操作.

源代码如下:

Consumer void accept(T t);

default Consumer andThen(Consumer super T> after);

andThen方法返回一个Consumer,以便于链式操作,值得注意的是,andThen方法是建立在accept基础之上的。执行的顺序是先执行accept,再执行andThen操作。

accept示例:

Consumer consumer = (p) ->System.out.println(p.getFirstName());//定义消费行为

consumer.accept(Person.builder().firstName("zs").build());//执行消费行为

andThen示例:

Consumer consumer = (p) -> System.out.println(p.getFirstName());

consumer.andThen((p) -> System.out.println(p.getLastName())).accept(Person.builder().firstName("san feng").lastName("zhang").build());

Consumer有相关的原始类型实现,是Consumer的特例(This is the primitive type specialization of{@link Consumer} for {@code double}.)

相关的实现有三个IntConsumer,LongConsumer,DoubleConsumer.

accept示例:

DoubleConsumer doubleConsumer = (d) ->System.out.println(d);

doubleConsumer.accept(23.2d);

BiConsumer是对两个参数进行消费.

accept示例:

BiConsumer biConsumer = (str, p) -> System.out.println(str +p.getFirstName());

biConsumer.accept("hello ", Person.builder().firstName("san feng").lastName("zhang").build());

BiConsumer的原始类型实现也有三个,ObjIntConsumer,ObjLongConsumer,ObjDoubleConsumer

accept示例:

ObjIntConsumer objIntConsumer = (Person ps, int i) -> {

ps.setAge(i);

System.out.println(ps.getFirstName()+":"+ps.getAge());

};

objIntConsumer.accept(Person.builder().firstName("san feng").lastName("zhang").build(), 300);

Consumer常用方式:

public static voidmain(String[] args) {

Consumer consumer1 = (p) ->System.out.println(p.getFirstName());

Consumer consumer2 = (p) ->System.out.println(p.getLastName());

Person p=Person.builder().firstName("san feng").lastName("zhang").build();

System.out.println("===========testConsumer start================");

testConsumer(p,consumer1.andThen(consumer2));

System.out.println("============testConsumer end===============");

}

public static void testConsumer(Person p, Consumerc) {

c.accept(p);

}

输出:

===========testConsumer start================

san feng

zhang

============testConsumer end===============

Consumer相关的函数式接口,只有这8个。按参数个数分为两种,每种又有三个原始类型的特殊实现,使用原始类型的相关实现,效率会高一点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值