Java 8关于 lambda&Consumer简单样例

本文通过实例展示了如何在Java中使用Consumer接口和Lambda表达式,包括静态和非静态方法的实现,并深入讲解了lambda表达式的简写形式,以及在列表操作中的应用。
package aaa.javaConsumer;

import java.util.ArrayList;
import java.util.function.Consumer;

/**
 * 关于Java consumer和lambda特性一些练习(::)
 */
public class ConsumerDemo {

    /**
     * 两个方法 都用了Consumer,Consumer<String> consumer = xxxx 即 Consumer对象被"赋值"了一个具体的方法或者是逻辑
     * 然后Consumer对象的accept只有一个参数,且没有返回值 且accept(xx)本身就是调用上方的逻辑
     */

//    静态方法-Consumer的实现1
    public static void TestConsumer(String a) {
        Consumer<String> consumer = (aa) -> {
            System.out.println("字符" + aa);
        };
        consumer.accept(a);
    }

    //    非静态-Consumer的实现2
    public void noStaticTestConsumer(Integer b) {
        Consumer<Integer> consumer = (aa) -> {
            System.out.println("数字" + aa);
        };
        consumer.accept(b);
    }


    /**
     * lambda中的简写
     * 即像scala匿名函数 只不过样式是()->{} 而不是()=>{}
     * 下方两个样例 前者是缩写为::实现调用 后者就是()->{}使用
     *
     * 下方样例最简单的理解就是用一个动态数组,add几个元素进去。再用forEach表示处理每个元素,而forEach()的参数,就是具体每个元素要经过的处理逻辑。
     * 这里的逻辑,就是上方定义好的方法中的逻辑。样例中就是println,当然用其他无返回值且只有一个参数的方法也行
     */


    public static void main(String[] args) {
        TestConsumer("diyi");

        ConsumerDemo consumerDemo = new ConsumerDemo();
        consumerDemo.noStaticTestConsumer(100);

        System.out.println("==========下方为lambda的::演示部分结果==========");
        System.out.println("==========1、(::)简写==========");
//ArrayList<String> 对象用foreach把每个元素都经过TestConsumer方法处理一边
        ArrayList<String> arr1 = new ArrayList<String>();
        arr1.add("a");
        arr1.add("b");
        arr1.add("c");
        /**
         * 通常都使用forEach 且forEach的参数就是<? super String>
         */
        arr1.forEach(ConsumerDemo::TestConsumer);

        System.out.println("==========2、()->{}方式 ==========");
        ArrayList<Integer> arr2 = new ArrayList<Integer>();
        arr2.add(111);
        arr2.add(222);
        arr2.add(333);

        arr2.forEach((xx) -> consumerDemo.noStaticTestConsumer(xx));
        
    }
}

/**
 * 输出结果:
 * 字符diyi
 * 数字100
 * ==========下方为lambda的::演示部分结果==========
 * 字符a
 * 字符b
 * 字符c
 * 数字111
 * 数字222
 * 数字333
 */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值