diff --git a/javaSE-day04/src/com/inmind/interface_return03/Demo12.java b/javaSE-day04/src/com/inmind/interface_return03/Demo12.java new file mode 100644 index 0000000..308afbd --- /dev/null +++ b/javaSE-day04/src/com/inmind/interface_return03/Demo12.java @@ -0,0 +1,38 @@ +package com.inmind.interface_return03; + +import java.util.Arrays; +import java.util.Comparator; +import java.util.Objects; + +/* +扩展-接口回调:我们可以通过接口回调的方式,将我们自定义的一些业务操作集成到底层源码中 + */ +public class Demo12 { + public static void main(String[] args) { + Integer[] arr = {70,61,55,34,23}; + sort(arr, new Comparator() { + @Override + public int compare(Integer o1, Integer o2) { +// return o1-o2;//升序 + return o2-o1;//降序 + } + });//默认升序的,但是我希望是降序怎么办???可以使用接口回调,将我们的业务嵌套到源码中 + System.out.println(Arrays.toString(arr)); + + } + + //自定义一个类似Collections.sort方法,对整数数组进行排序的功能 + public static void sort(A[] arr, Comparator comparator) { + for (int i = 0; i < arr.length - 1; i++) {//外层循环的趟数 + for (int j = 0; j < arr.length - 1 - i; j++) {//内层循环的次数 + //内层循环在比较时,相邻的2个比较,大的往后替换 + if (comparator.compare(arr[j],arr[j + 1]) > 0) { +// if (arr[j] -arr[j + 1] < 0) { + A temp = arr[j];//记录较大的值 + arr[j] = arr[j + 1];//将较小的值靠前 + arr[j+1] = temp; + } + } + } + } +}