Java8新特性:(七)消费性接口 Consumer

1、Comsumer简介

源码

import java.util.Objects;

@FunctionalInterface
public interface Consumer<T> {

    void accept(T t);

   
    default Consumer<T> andThen(Consumer<? super T> after) {
        Objects.requireNonNull(after);
        return (T t) -> { accept(t); after.accept(t); };
    }
}

案例: 

package com.xian.thread.lambda;

import org.junit.Test;

import java.util.function.Consumer;
import java.util.stream.Stream;

/**
 * 消费型接口:Consumer
 */
public class ConsumerTest {


    @Test
    public void test() {
        // 原写法
        Consumer<String> consumer = new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s.toUpperCase());
            }
        };
        consumer.accept("Tom and Jerry");

        // lambda写法
        Consumer<String> consumer1 = s -> System.out.println(s.toUpperCase());
        consumer1.accept("Tom and Jerry");
        /**
         * TOM AND JERRY
         * TOM AND JERRY
         */
    }

    @Test
    public void andThenTest() {
        String[] arr = {"张三:18", "李四:25", "王五:28"};
        Stream.of(arr).forEach(str -> {
            andThenTest(str,
                    st -> System.out.println("姓名:"+st.split(":")[0]),
                    st -> System.out.println("年龄:"+st.split(":")[1]));
        });
        /**
         * 结果:
         * 姓名:张三
         * 年龄:18
         * 姓名:李四
         * 年龄:25
         * 姓名:王五
         * 年龄:28
         */
    }


    public <T> void andThenTest(T str, Consumer<T> consumer1, Consumer<T> consumer2) {
        consumer1.andThen(consumer2).accept(str);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值