寫在前面:
我也是一名java語言的愛好者,僅以此文作爲學習的記錄,對於文中出現的代碼規範,代碼格式,算法效率等問題,希望各路大神不吝賜教,在下感激不盡。同是學習的同學也同樣希望互相交流,取長補短。
一.概述
實現了Comparable接口的自定義類T,即定義了T的比較方法compareTo(就像integer類的大於等於小於),換句話說腦洞足夠大你可以任意定義自己需要的大小規則,結果是當你把T類的對象裝入List容器後,可以直接通過collections.sort方法進行排序。
二.compareTo方法
int compareTo(T o)
比較此對象與指定對象的順序。如果該對象小於、等於或大於指定對象,則分別返回負整數、零或正整數。
值得一提的是Integer和String已經實現CompareTo方法
三.實例
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class Main {
/**
* @param args
*/
class Node implements Comparable<Node>{
public int value;
public String NodeNum;
public Node(int v,String s){
value = v;
NodeNum =s;
}
@Override
public int compareTo(Node arg0) {//實現compareTo
// TODO Auto-generated method stub
if(value<arg0.value){
return -1;
}else if (value==arg0.value) {
return 0;
}else {
return 1;
}
}
@Override
public String toString(){//重寫本類對象的標準化輸出
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(value+" ");
stringBuilder.append(NodeNum);
return stringBuilder.toString();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Node n1 = new Main().new Node(3,"num1");
Node n2 = new Main().new Node(1,"num2");
Node n3 = new Main().new Node(6,"num3");
List<Node> nodeList= new ArrayList<Node>(Arrays.asList(n1,n2,n3));
Collections.sort(nodeList);
System.out.println(nodeList);
}
}