public class Demo1 {
public static void main(String[] args) {
Runnable runnable=new Runnable() {
public void run() {
System.out.println("执行了.....");
}
};
new Thread(runnable).start();
Runnable runnable2=()->{
System.out.println("执行了...");
};
new Thread(runnable2).start();
Runnable runnable3=()->System.out.println("执行了...");
new Thread(runnable3).start();
new Thread(()->System.out.println("执行了...")).start();
/
Comparator<String> com=new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.length()-o2.length();
}
};
Comparator<String> com2=(o1,o2)->{
return o1.length()-o2.length();
};
TreeSet<String> treeSet=new TreeSet<>(com2);
TreeSet<String> treeSet2=new TreeSet<>((o1,o2)->o1.length()-o2.length());
}
}
/**
* 函数式接口
* @author
* @date 2020/11/15 18:54
*/
@FunctionalInterface //验证是否是函数式接口
public interface Usb {
void service();
}
public class Demo2 {
public static void main(String[] args) {
Usb mouse=new Usb() {
@Override
public void service() {
System.out.println("鼠标开始工作了 。。。。");
}
};
run(mouse);
run(()-> System.out.println("风扇开始工作了。"));
}
public static void run(Usb usb){
usb.service();
}
}
public class Demo3 {
public static void main(String[] args) {
//匿名内部类方式
Consumer<Double> consumer=new Consumer<Double>() {
@Override
public void accept(Double t) {
System.out.println("聚餐消费:"+t);
}
};
happy(consumer,1000);
//lambda表达式方式
happy(t-> System.out.println("聚餐消费:"+t),1000);
happy(t-> System.out.println("ktv消费:"+t),800);
happy(t-> System.out.println("足疗消费:"+t),3000);
//供给型接口
int[] arr=getNums(()->new Random().nextInt(100),6);
System.out.println(Arrays.toString(arr));
int[] arr2=getNums(()->new Random().nextInt(1000),10);
System.out.println(Arrays.toString(arr2));
//函数式接口
String result=handlerString(s->s.toUpperCase(),"hello");
System.out.println(result);
String result2=handlerString(s->s.trim()," hello ");
System.out.println(result2);
//断言式接口
List<String> names=new ArrayList<String>();
names.add("zhangsan");
names.add("zhangwuji");
names.add("wangsu");
names.add("2134");
List<String> resultLst=filterNames(t->t.indexOf("i")>0,names);
System.out.println(resultLst);
}
// Consumer 消费型接口
public static void happy(Consumer<Double> consumer,double money){
consumer.accept(money);
}
//Supplier供给型接口
public static int[] getNums(Supplier<Integer> supplier,int count){
int[] arr=new int[count];
for(int i=0;i<count;i++){
arr[i]=supplier.get();
}
return arr;
}
//Function 函数型接口
public static String handlerString(Function<String,String> function,String str){
return function.apply(str);
}
//Predicate 断言型接口
public static List<String> filterNames(Predicate<String> predicate,List<String> list){
List<String> resultList=new ArrayList<String>();
for(String string:list){
if(predicate.test(string)){
resultList.add(string);
}
}
return resultList;
}
}
public class Employee {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Employee(String name) {
this.name = name;
}
public Employee() {
this.name = name;
}
}
/**
* 方法引用的使用
* 1、对象::实例方法
* 2、类::静态方法
* 3、类::实例方法
* 4、类::new
* @author
* @date 2020/11/15 20:22
*/
public class Demo4 {
public static void main(String[] args) {
//对象::实例方法
Consumer<String> consumer=s-> System.out.println(s);
consumer.accept("a");
Consumer<String> consumer2=System.out::println;
consumer2.accept("world");
//类::静态方法
Comparator<Integer> com=(o1,o2)->Integer.compare(o1,o2);
Comparator<Integer> com2=Integer::compare;
int s=com2.compare(1,3);
System.out.println(s);
//类::实例方法
Function<Employee,String> function=e->e.getName();
Function<Employee,String> function2=Employee::getName;
System.out.println(function2.apply(new Employee("小明")));
//类::new
Supplier<Employee> supplier=()->new Employee("1");
Supplier<Employee> supplier2=Employee::new;
}
}