函数式接口 lambda表达式(jdk1.8新特性)

函数式接口

和匿名内部类的效果相同但比匿名内部类实现起来更为简单快捷
Predicate接口的测试使用,返回值为true/false
用不同的处理方式去处理传入的参数
Predicate接口=lambda表达式(具体的处理方式)
不同的Predicate.方法()(这个方法的实现交给lambda表达式);


import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;

public class Test1 {
	
	public static void show(List<String> list,Predicate<String> pre) {
		
		for(String msg:list) {
			//自定义规则,测试msg
			boolean test = pre.test(msg);
			if(test) {
				System.out.println(msg);
			}
		}
		
	}
	
	
	public static void main(String[] args) throws Exception {
		
		List<String> list=new ArrayList<>();
		list.add("tom");
		list.add("tom1");
		list.add("tom2");
		list.add("lom3");
		list.add("tom4wem");
//		Predicate<String> p1=new Predicate() {
//
//			@Override
//			public boolean test(Object t) {
//				// TODO Auto-generated method stub
//				return false;
//			}};

		Predicate<String> p2=(t)->{return true;};
		
		Predicate<String> p3=(msg)->{
			
			return msg.startsWith("l");};
			
			
	    Predicate<String> p4=(msg)->{
				
				return msg.length()>4?true:false;};
		Predicate<String> p5=(msg)->{
					
				return msg.endsWith("m");};
		Predicate<String> p54=p5.and(p4);
		
		show(list,p54);
		
	}

}

Supplier接口

import java.util.UUID;
import java.util.function.Supplier;

//Supplier
public class Test3 {
	public static void main(String[] args) throws Exception {
		//lambda表达式实现抽象方法
		Supplier<String> su=()->{
			String uuid=UUID.randomUUID().toString();
			return uuid.substring(0,8);
		};
		System.out.println(su.get());
	}

}

Consumer接口

//Consumer
public class Test4 {
	public static void show(List<String> list, Consumer<String> con){
		for(String msg:list) {
			con.accept(msg);
		}
		
	}
	public static void main(String[] args) throws Exception {
		
		List<String> list=new ArrayList<>();
		list.add("tom");
		list.add("tom1");
		list.add("tom2");
		list.add("lom3");
		list.add("tom4wem");
		
		Consumer<String> con=(msg)->{
			System.out.println(msg);
			
		};
		show(list,con);
		
	}

}

Function接口

import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;

public class Test2 {
	public static void show(List<String> list,Function<String,Integer> fun) {
		for(String msg:list) {
			//使用接口中的方法
			Integer apply = fun.apply(msg);
			System.out.println(apply);
		}
		
	}
	public static void main(String[] args) throws Exception {
		List<String> list=new ArrayList<>();
		list.add("tom");
		list.add("tom1");
		list.add("tom2");
		list.add("lom3");
		list.add("tom4wem");
		Function<String, Integer> f1=(msg)->{
			return msg.length();
		};
		show(list,f1);
	}
	

}

函数式接口调用构造函数

import java.util.function.Function;
import java.util.function.Supplier;

import com.briup.ch24.*;
//方法引用
public class Test6 {
	public static void cons() {
		//无参构造
		//无参有返回值
		Supplier<Student> s1=()->{return new Student();};
		s1.get();
		Supplier<Student> s2=Student::new;
		Student s21=s2.get();
		
		//有参构造
		//有参有返回值,一个参数,一个返回值
		Function<Integer, Student> s3=Student::new;
		Student apply = s3.apply(10);
		System.out.println(apply.getId());
		
	}
	
	public static void main(String[] args) throws Exception {
		cons();
		
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值