import java.util.Arrays;
import java.util.Comparator;
public class demo1 {//引用
public static void main(String[] args) {
Integer []arr={1,2,4,3,8,6};
//匿名内部类
Arrays.sort(arr, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1-o2;
}
});
System.out.println(Arrays.toString(arr));
System.out.println("=============");
//lambda表达式
Integer []arr1={1,2,4,3,9,6};
Arrays.sort(arr1, (o1, o2)-> o1-o2);
System.out.println(Arrays.toString(arr1));
//引用
Integer []arr2={1,8,4,3,9,6};
Arrays.sort(arr2,demo1::subtraction);//demo1是我们的类名,subtraction是已经存在的方法名
}
public static int subtraction(int num1,int num2){
return num1-num2;
}
}
这个引用的方法的来源不一定就是我们自己写的,也可以是Java系统里面已经存在的,或者由第三方导入的,也就是别人已经写好的然后我们导入进去使用;
格式: 类名::静态方法
import java.util.ArrayList;
import java.util.Collections;
import java.util.function.Function;
public class demo2 {//引用静态方法
public static void main(String[] args) {
ArrayList<String>list=new ArrayList<>();
Collections.addAll(list,"1","2","3","4","5");
//目标:把list集合里的元素都变为Integer类型
//法一
list.stream().map(new Function<String, Integer>() {
@Override
public Integer apply(String s){
int i=Integer.parseInt(s);
return i;
}
}).forEach(s-> System.out.println(s));
System.out.println("=================");
//法二:
list.stream().map(Integer::parseInt).forEach(s-> System.out.println(s));
//此时Integer表示的是一个类,因为他是引用数据类型,根String那样也是一个类,parseInt是Integer的静态方法,所以用类名::静态方法
}
}