之前对回调函数不是很理解,经同事提醒,恍然大悟.
今天我们就从冒泡排序开始说起,冒泡排序大家应该都知道,所有接触过编程语言的,所知道的第一个排序应该都是它.
//冒泡排序
private static void sort(int[] a,Comparator comparator) { for(int i=0;i
当我们需要实现 排序顺序 由调用者决定时,冒泡排序就变成了底层代码,不能乱动,这时回调函数就派上用场了
定义接口
interface Comparator{ int compare(int a,int b); }
实现类
//如果a>b返回1;a
public int compare(int a, int b) { if(a > b){ return 1; } else if(a < b){ return -1; } else { return 0; } }}
//倒序排列class MyComparatorDesc implements Comparator{ public int compare(int a, int b) { if(a > b){ return -1; } else if(a < b){ return 1; } else { return 0; } } }
//需要一个comparator接口
private static void sort(int[] a,Comparator comparator) { for(int i=0;i
主程序
public static void main(String[] args) { int[] array=new int[]{11,22,33,44,11}; //降序排列
//传递一个实现接口Comparator的类 sort(array,new MyComparatorDesc()); for(int arr:array) { System.out.print(arr+" "); } //升序排列 sort(array,new MyComparator()); for(int arr:array) { System.out.print(arr+" "); }