2011-07-31 77 views
0

我有一個類型爲A的對象列表,而且我必須爲它的類型爲String的字段命令它。使用我的類的字符串字段進行比較的比較器?

public class A{ 
    public String field1; 
    public Integer field2; 
    ... 
} 

如果我不得不下令對INT領域早就這樣做了:

Collections.sort(listOfA, new Comparator<A>() { 
     public int compare(A p1, A p2) { 
      return p1.field2 - p2.field2); 
      } 
     }); 

但不幸的是需要通過String類型的字段訂購。

我該怎麼做?

+1

由於整數溢出,在'compareTo'方法中使用減法通常是危險的。改用Google的Guava中的'Ints.compare'。 –

+1

@Roland或只是''''='和'<' –

+0

是的,但是在'<=>'的情況下,您必須明確說明運算符和結果。我發現寫'return Ints.compare(a,b)'更容易。 –

回答

2

或者你的類可以實現接口Comparable,這樣

public class A implements Comparable<A> { 
    public String field1; 
    public Integer flied2; 

    public int compareTo(A o) { 
     return this.field1.compareTo(o.field1); 
    } 

} 

這將讓你

Collections.sort(listofA); 

哪個IMO是最好/如果A總是按字段1排序,則更乾淨。