package Hello1;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/*
* 需求:實現(xiàn)名字 年齡靈活排序,不用修改Student里的代碼
* */
public class Test11 {
public static void main(String[] args) {
Student[] xx = { //定義一個對象數(shù)組
new Student("cxm",34),
new Student("axm",36),
new Student("ssm",32),
new Student("kxm",31),
};
//Comparator是接口,所以后面要用匿名內(nèi)部類來實現(xiàn)Comparator所定義的方法
//因為是比較器,所以你得告訴構(gòu)造器,你要比較的對象類型是什么,所以得用泛型
Comparator<Student> c1 = new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
//o1 和 o2是學(xué)生對象,
//返回正負整數(shù)
return o1.age - o2.age;
}
};
Comparator<Student> c2 = new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return o1.name.compareTo(o2.name); //compareTo是Comparable的
}
};
//根據(jù)name來實現(xiàn)排序
List<Student> LL= Arrays.asList(xx);
Collections.sort(LL,c2);
for(Student ss: xx) {
System.out.println(ss.toString());
}
}
}
class Student {
public String name;
public int age;
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student [name=" + this.name + ", age=" + this.age + "]"; //this當前類
}
}
Java-利用比較器解耦后
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 任何App,無論大小,都存在繁雜的頁面跳轉(zhuǎn),按照正常的邏輯處理,那就是在發(fā)起的地方實例化一個targetVC,然后...
- 寫在最前 以下方案的思路來自于項目組的同事LEAF 現(xiàn)狀 在iOS開發(fā)中,對于根據(jù)不同的事件跳轉(zhuǎn)到不同的控制器這...
- 使用場景 項目中經(jīng)常會出現(xiàn)從A控制器push到B控制器,這個時候你需要在A控制器中#import B 然后 [s...
- 前言 本文參考了微信讀書團隊的文章,學(xué)習(xí)了runtime反射機制的強大。具體的demo工程 學(xué)習(xí)過程1 A和B想要...
- 后端——>Django框架——>用Python寫的 要想自己改Django,先得了解框架,學(xué)會mini-web框架...