2014-10-31 23 views
0

我必須按可能爲空的不同字符串屬性("")或甚至null排序集合。這兩個值都是允許的,必須同等對待。設計比較器訪問可能爲空或空的字符串字段的最佳方法

我通過使用一種方法解決了這個問題,該方法檢查每個字符串的null並在找到null時返回一個空字符串。


到目前爲止,我比較看起來basicly這樣

public class MyComparator implements Comparator<MyObject> { 

    @Override 
    public int compare(MyObject o1, MyObject o2) { 
     // ... some logical stuff like e.g. 
     return rein(o1.getSomeValue()).compareTo(rein(o2.getSomeValue()); 
    } 

    private String rein(String str) { 
     return str == null ? "" : str;   
    } 
} 

我不知道這樣的設計被認爲是好的,如果有反對的理由呢?如果不好,我還能做些什麼來滿足我的要求?所有這些(大多數情況下不需要)函數調用對我來說都很難看,因爲我們正在談論大約1/1000的情況。所以我想知道是否有更優雅的解決方案?

回答

3

這裏沒有錯。如果省略'rein'方法,當o1.getSomeValue()返回null時,您將得到NullPointerException。所以這個檢查對於正確的比較方法工作是必需的。很難想象更優雅的解決方案。

+0

感謝您的意見。只是這些案例非常罕見,所以我認爲可能會有更好的解決方案。也許冒NPE的風險,並抓住它來執行不同的邏輯,但是爲這個過程濫用例外對我來說似乎也是醜陋的。 – stg 2014-10-31 16:35:12