package com.Lucky.Function; import java.util.Arrays; import java.util.Comparator; import java.util.stream.Collector; /* 方法引用: 将已经存在的方法进行引用 使用条件:1.引用地方要是函数式接口:@FunctionalInterface 2.被引用的方法必须存在 3.被引用的方法的形参以及返回值要跟抽象方法的保持一致 4.被引用的方法要满足当前抽象方法的需求 */ public class Function1 { public static void main(String[] args) { Integer[] arr={1,2,3,4,5,6}; //1.匿名内部类 Arrays.sort(arr, new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return o1-o2; } }); System.out.print("匿名内部类:"+Arrays.toString(arr)+"\t"); System.out.println(); //2.lamda表达式 Arrays.sort(arr, (o1,o2) ->o1-o2); System.out.print("lamda表达式:"+Arrays.toString(arr)+"\t"); System.out.println(); //2.方法引用: 方法引用符 :: Arrays.sort(arr,Function1::subInt); System.out.print("方法引用标志 ::"+Arrays.toString(arr)+"\t"); } //被引用的方法 public static int subInt(int val,int v) { return val-v; } public int sub(int val,int v) { return val-v; } public boolean filter(String s) { return s.startsWith("张")&& s.length() == 3; } }