s-day04-接口回调案例
This commit is contained in:
@@ -1,27 +1,96 @@
|
||||
package com.inmind.sort05;
|
||||
|
||||
import java.util.Arrays;
|
||||
import com.inmind.treeset02.Student;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/*
|
||||
冒泡排序
|
||||
|
||||
接口回调:帮助大家理解比较器Comparator,如果实现排序功能
|
||||
|
||||
接口回调的原理功能:将我们自定义的业务逻辑,嵌入到源码中!!!!
|
||||
*/
|
||||
public class SortDemo12 {
|
||||
public static void main(String[] args) {
|
||||
//创建一个数组
|
||||
int[] arr = {1, 5, 3, 4, 2};
|
||||
Integer[] arr = {1, 5, 3, 4, 2};
|
||||
//5个数字,要排4趟
|
||||
sort(arr,new Comparator<Integer>(){
|
||||
|
||||
@Override
|
||||
public int compare(Integer o1, Integer o2) {
|
||||
//return o1-o2;//升序
|
||||
return o2-o1;
|
||||
}
|
||||
});
|
||||
|
||||
System.out.println(Arrays.toString(arr));
|
||||
|
||||
System.out.println("--------------------------");
|
||||
Student[] students = {
|
||||
new Student("小王1", 15),
|
||||
new Student("小王2", 19),
|
||||
new Student("小王3", 17),
|
||||
new Student("小王4", 18),
|
||||
new Student("小王5", 16)
|
||||
};
|
||||
|
||||
sort(students, new Comparator<Student>() {
|
||||
@Override
|
||||
public int compare(Student o1, Student o2) {
|
||||
return o2.age - o1.age;
|
||||
}
|
||||
});
|
||||
System.out.println(Arrays.toString(students));
|
||||
System.out.println("----------------------");
|
||||
ArrayList<Student> list = new ArrayList<>();
|
||||
Collections.addAll(list,
|
||||
new Student("小王1", 15),
|
||||
new Student("小王2", 19),
|
||||
new Student("小王3", 17),
|
||||
new Student("小王4", 18),
|
||||
new Student("小王5", 16));
|
||||
|
||||
sortList(list, new Comparator<Student>() {
|
||||
@Override
|
||||
public int compare(Student o1, Student o2) {
|
||||
return o2.age - o1.age;
|
||||
}
|
||||
});
|
||||
System.out.println(list);
|
||||
}
|
||||
|
||||
//定义一个排序方法,接收一个需要排序的整数数组,和一个比较器Comparator
|
||||
public static <T> void sort(T[] arr, Comparator<T> comparator) {
|
||||
for (int i = 0; i < arr.length - 1; i++) {//循环4次
|
||||
//每趟排序的次数刚好就是arr.length - 1-i
|
||||
for (int j = 0; j < arr.length - 1 - i; j++) {
|
||||
//每趟中每次都是相邻比较,如果大或者小就往后(升序,降序)
|
||||
if (arr[j] < arr[j + 1]) {
|
||||
// if (arr[j] -arr[j + 1] > 0 ) {
|
||||
if (comparator.compare(arr[j], arr[j + 1]) > 0 ) {
|
||||
//交换
|
||||
int temp = arr[j];
|
||||
T temp = arr[j];
|
||||
arr[j] = arr[j + 1];
|
||||
arr[j+1] = temp;
|
||||
}
|
||||
}
|
||||
}
|
||||
System.out.println(Arrays.toString(arr));
|
||||
}
|
||||
|
||||
public static <T> void sortList(List<T> arr, Comparator<T> comparator) {
|
||||
for (int i = 0; i < arr.size() - 1; i++) {//循环4次
|
||||
//每趟排序的次数刚好就是arr.length - 1-i
|
||||
for (int j = 0; j < arr.size() - 1 - i; j++) {
|
||||
//每趟中每次都是相邻比较,如果大或者小就往后(升序,降序)
|
||||
// if (arr[j] -arr[j + 1] > 0 ) {
|
||||
if (comparator.compare(arr.get(j), arr.get(j+1)) > 0 ) {
|
||||
//交换
|
||||
T temp = arr.get(j);
|
||||
arr.set(j, arr.get(j+1));
|
||||
arr.set(j = 1, temp);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,8 +3,8 @@ package com.inmind.treeset02;
|
||||
import java.util.Objects;
|
||||
|
||||
public class Student implements Comparable<Student>{
|
||||
String name;
|
||||
int age;
|
||||
public String name;
|
||||
public int age;
|
||||
|
||||
public Student(String name, int age) {
|
||||
this.name = name;
|
||||
|
||||
Reference in New Issue
Block a user