簡體   English   中英

設計比較器的最佳方法是訪問可能為空或為null的字符串字段

[英]Best way to design a Comparator accessing String fields that might be empty or null

我必須按可能為空( "" )甚至為null的不同String屬性對Collection進行排序。 這兩個值都是允許的,必須同等對待。

我通過使用一種方法解決了這個問題,該方法檢查每個String是否為null並在找到null時返回一個空String。


到目前為止,我的比較器基本上看起來像這樣

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情況。 所以我想知道是否有更優雅的解決方案?

沒錯 如果省略“ rein”方法,則當o1.getSomeValue()返回null時,將獲得NullPointerException。 因此,此檢查對於正確的比較方法工作是必需的。 很難想象會有更優雅的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM