用java.util.Collections中的sort方法對兩個類的物件進行排序
這對標題提出的問題提供了一種比較笨的解決方案,採用了外部比較器介面Comparator。
import java.util.*;
class A implements Comparable<A> {
int num;
public A(int num){
this.num = num;
}
@Override
public int compareTo(A a){
return this.num > a.num ? 1 : -1;
}
@Override
public String toString(){
return "A-"+ this.num;
}
}
class B implements Comparable<B> {
int num;
public B(int num){
this.num = num;
}
@Override
public int compareTo(B b){
return this.num > b.num ? 1 : -1;
}
@Override
public String toString(){
return "B-"+ this.num;
}
}
class ABComparator implements Comparator {
public int compare(Object o1, Object o2) {
if((o1 instanceof A) && (o2 instanceof B)){
A a = (A) o1;
B b = (B) o2;
if(a.num > b.num){
return 1;
} else {
return -1;
}
}
if((o1 instanceof B) && (o2 instanceof A)){
B a = (B) o1;
A b = (A) o2;
if(a.num > b.num){
return 1;
} else {
return -1;
}
}
if((o1 instanceof A) && (o2 instanceof A)){
A a = (A) o1;
A b = (A) o2;
return a.compareTo(b);
}
if((o1 instanceof B) && (o2 instanceof B)){
B a = (B) o1;
B b = (B) o2;
return a.compareTo(b);
}
return 0;
}
}
class Test1 {
public static void main(String[] args) {
List ls = new ArrayList();
ls.add(new A(1));
ls.add(new A(15));
ls.add(new A(20));
ls.add(new A(4));
ls.add(new A(13));
ls.add(new B(11));
ls.add(new B(14));
ls.add(new B(12));
ls.add(new B(13));
ls.add(new B(10));
Collections.sort(ls, new ABComparator());
System.out.println(ls);
}
}
相關文章
- 在命令列用 sort 進行排序命令列排序
- JavaScript 使用sort()方法從數值上對陣列進行排序JavaScript陣列排序
- python用List的內建函式list.sort進行排序Python函式排序
- 對類物件的方法操作物件
- Collections sort()排序方法排序
- 排序(對於 sort 函式的使用)排序函式
- Python中用來排序的方法sort、sortedPython排序
- 陣列進行排序的方法陣列排序
- python 對字典的值進行排序Python排序
- 一個命令對文字進行高效排序排序
- 遍歷物件鍵值對的兩種方法物件
- Collections.sort()方法,字元排序字元排序
- 用原生Js利用sort方法 實現圖片的正 倒排序和隨機排序JS排序隨機
- 對字典進行排序排序
- Javascript陣列排序sort方法和自定義排序方法JavaScript陣列排序
- 用兩種方法把JSON資料格式轉換為Python的類物件JSONPython物件
- Python中sort()方法的使用Python
- java stream()流對兩個集合進行比對Java
- JavaScript中陣列Array.sort()排序方法詳解JavaScript陣列排序
- Python實用技法第13篇:對自定義類物件排序:attrgetterPython物件排序
- 如何在Python中對dicts列表進行排序Python排序
- 使用Collections對list的內容進行排序排序
- Python對字典進行排序Python排序
- Arrays.Sort()中的那些排序演算法排序演算法
- Visio對一個物件進行水平翻轉物件
- 用xgboost模型對特徵重要性進行排序模型特徵排序
- 對N個數進行從大到小排序排序
- sort排序排序
- Python進階之物件導向(類的特殊方法)Python物件
- 理解Python中的類物件、例項物件、屬性、方法Python物件
- python輸入兩個數進行求和的方法是什麼?Python
- 關於js陣列方法sort()負數排序的陷阱JS陣列排序
- linux 中awk命令實現按照 指定的字元對文字進行排序Linux字元排序
- JavaScript 根據物件鍵值進行排序JavaScript物件排序
- 「Js」物件按照鍵名來進行排序JS物件排序
- 如何在dhtmlxGantt網格中對任務進行排序和重新排序HTML排序
- Arr::sort()輔助函式對多維陣列的排序函式陣列排序
- LeetCode-兩個排序陣列的中位數LeetCode排序陣列
- 4. 兩個排序陣列的中位數排序陣列