java8新特性-lambda四大内置函数式接口

在上一次的demo中,我们使用lambda在处理自己定义的业务时,需要自定义函数式接口,其实java8已经内置了常用的接口

四大核心内置函数式接口

Consumer<T> : 消费型接口

void accept(T t);

@Test
	public void test01(){
		cons("=======", (x)->System.out.println(x));
		
	}
	public void cons(String s,Consumer<String> con){
		con.accept(s);
	}

Supplier<T> : 供给型接口

T get(); 

@Test
	public void test02(){
		supp(()->666*2);
	}
	public void supp(Supplier<Integer>  su) {
		System.out.println(su.get());
	}

Function<T, R> : 函数型接口

R apply(T t);

@Test
	public void test03(){
		List<Integer> fun = fun(6,(x)->{
			List<Integer> list=new ArrayList<>();
			for (int i = 0; i < x; i++) {
				Double random = Math.random()*100;
				list.add(random.intValue());
			}
			return list;
		});
		
		for (Integer integer : fun) {
			System.out.println(integer);
		}
	}
	
	public List<Integer> fun(Integer num ,Function<Integer,List<Integer>> fun){
		return fun.apply(num);
	}

 Predicate<T> : 断言型接口

 boolean test(T t);

@Test
	public void test04(){
		List<String> list=Arrays.asList("23456","wqew","sfsd","yfhfg");
		List<String> pre = pre(list, (x)->{
			String y="y";
			return x.contains(y);
			});
		for (String string : pre) {
			System.out.println(string);
		}
		
		/**
		 * 注意:这个地方我使用了上次练习中多个语句和一个语句,这里提醒下,当使用一条语句的时候不可以包含{}和return,而多条语句必须要语法规范,哪怕后面的;也不可以少
		 * 否则eclipise会认为语法有错误(我的版本是4.5.1)
		 */
		pre(list, (x)->x.contains("y"));
	}
	
	public List<String> pre(List<String> list,Predicate<String> s){
		List<String> list1=new ArrayList<>();
		for (String string : list) {
			if(s.test(string)){
				list1.add(string);
			};
		}
		return list1;
	}; 

其余的内置接口如下:


总结:老话说 纸上得来终觉浅。。。。是特别有道理的,不去动手去敲一遍,你是不会知道里面哪里有坑,更不会深入的去思考

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值