【学习总结】Consumer, Supplier, Predicate, Function接口用法汇总

Consumer接口

public void test_consumer(){
	List<Integer> list = new ArrayList<Integer>(){
	    {
	        add(1);
	        add(2);
	        add(3);
	        add(4);
	    }
	};
	
	// 1. 使用接口实现方法
	Consumer<Integer> consumer = new Consumer<Integer>() {
	    @Override
	    public void accept(Integer integer) {
	        System.out.println(integer);
	    }
	};
	list.forEach(consumer);
	
	// 2. lambda表达式
	list.forEach(i -> System.out.println(i));
	
	// 3. 调用方法
	list.forEach(System.out::println);
}

Supplier接口

public void test_supplier(){
	// 1. 使用接口实现方法
	Supplier<Double> supplier = new Supplier<Double>() {
	    @Override
	    public Double get() {
	        return Math.random() * 10;
	    }
	};
	System.out.println(supplier.get());
	
	// 2. lambda表达式
	supplier = () -> Math.random() * 10;
	System.out.println(supplier.get());
	
	// 3. 方法引用
	supplier = Math::random;
	System.out.println(supplier.get());
}

Predicate接口

public void test_predicate(){
	List<Integer> list = new ArrayList<Integer>(){
	    {
	        add(1);
	        add(2);
	        add(3);
	        add(4);
	    }
	};
	
	// 1. 使用接口实现方法
	Predicate<Integer> predicate = new Predicate<Integer>() {
	    @Override
	    public boolean test(Integer integer) {
	        return integer > 2;
	    }
	};
	list.stream().filter(predicate).forEach(System.out::println);
	
	// 2. lambda表达式
	list.stream().filter(i -> i > 2).forEach(System.out::println);
}

Function接口

public void test_function(){
    List<String> list = new ArrayList<String>(){
        {
            add("Harry");
            add("Ron");
            add("Hermione");
        }
    };

    // 1. 使用接口实现方法
    Function<String, Integer> function = new Function<String, Integer>() {
        @Override
        public Integer apply(String s) {
            return s.length();
        }
    };
    list.stream().map(function).forEach(System.out::println);

    // 2. lambda表达式
    list.stream().map(s -> s.length()).forEach(System.out::println);

    // 3. 方法引用
    list.stream().map(String::length).forEach(System.out::println);
}

参考:
https://www.cnblogs.com/SIHAIloveYAN/p/11288064.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值