根据要比较的String
对象数量的不同,有不同的解决方法。
如果你只需要比较几个String
对象,并且在应用程序中只需要进行一两次这样的比较,那么可以将代码封装在需要此类比较的类中的方法中,以使代码更易读:
public boolean isConditionSatisfied(String a,String b,String c) {
return Objects.equals(a,b) && Objects.equals(b,c);
}
客户端代码可以被简化并且更易读:
if(isConditionSatisfied(a,b,c)) { //doSomething }
请注意,自JDK 1.7以来,
Objects.equals
是一种内置方法。与其他答案相比,使用
Object.equals
可以防止
NullPointerExcsption
,我认为这是绝对必要的。
如果您经常需要进行这种比较(不仅仅是
String
对象),为什么只寻找用于比较
String
对象的解决方案?为什么不寻找适用于任何类型或数量对象的通用解决方案?
public class ObjectUtils {
public static boolean multipleEquals(Object... objectsToCompare) {
if (null == objectsToCompare) {
return false;
} else if (objectsToCompare.length == 0) {
return false;
} else if (objectsToCompare.length == 1) {
return true;
}
boolean allEqual = true;
for (int curr = 1; curr < objectsToCompare.length; ++curr) {
if(!Objects.equals(objectsToCompare[0],objectsToCompare[curr])) {
allEqual = false;
break;
}
}
return allEqual;
}
}
好的,您想要比较4个String
对象,为什么不这样做:
if(ObjectUtils.multipleEquals("1","1","1","1") { }
但是现在你想要比较5个整数
对象,没问题:
if(ObjectUtils.multipleEquals(1,2,3,4,5) { }
你甚至可以混合和匹配对象:
if(ObjectUtils.multipleEquals("1",2,"3",4) { }