比较可能为null的字符串的更好方法

时间:2011-12-01 05:18:52

标签: java string

我只是想知道是否有更好的方法来做到这一点。我觉得这可能效率低下。问题是出于DB的原因我需要比较有时可能为null的字符串。

public static boolean compareStrings(String str1, String str2){

    if(str1 == null && str2 == null) return true;

    if(str1 != null && str2 != null){
        if(str1.equals(str2))
            return true;
    }

    return false;
}

4 个答案:

答案 0 :(得分:46)

通常的习惯用语是:

return (str1 == null ? str2 == null : str1.equals(str2));

答案 1 :(得分:30)

你说这些可能来自数据库。那时,与数据库查询的成本相比,围绕一些无效测试的任何低效率都是无关紧要的。我会专注于可读性。

为此,我将开始使用Guava及其Objects类:

boolean equal = Objects.equal(a, b);

我希望按照Taymon的代码来实现 - 基本上 - 但是把它放在一个的地方很好。

编辑:对于Java 7+,您不需要Guava。您可以使用java.util.Objects.equal(a, b)

答案 2 :(得分:4)

如果您愿意使用apache Commons StringUtils,那么他们有等于比较两个字符串null-safe

答案 3 :(得分:1)

如果在正常执行程序期间导致瓶颈,则此代码效率低下。了解这种情况的唯一方法是通过分析器运行程序。直到你这样做并且看到这个函数导致性能问题的事实,我不会担心它。