equalsIgnoreCase() 方法中有多个参数
More than one parameter inside equalsIgnoreCase() method
我想在使用 equals 方法时清理我的代码。我想知道是否有任何方法可以一次在 equals() 方法中添加更多参数。
目前,它看起来像这样:
if (myString.equalsIgnoreCase("option1") ||
myString.equalsIgnoreCase("option2") ||
myString.equalsIgnoreCase("option3"))
doSomething();
虽然我想要这样:
if (myString.equalsIgnoreCase("option1", "option2", "option3"))
doSomething();
有什么我可以做的吗?比如覆盖 equals() 方法或类似的方法?
创建一个包含可能值的列表(或类似列表),然后检查它是否包含您的字符串
List<String> foo = Arrays.asList("opt1", "opt2", "opt3");
String bar = "OPT1";
if (foo.contains(bar.toLowerCase())) {
doSomething();
}
您可以使用 Stream.anyMatch()
:
if (Stream.of("option1", "option2", "option3").anyMatch(myString::equalsIgnoreCase))
我的方法是创建一个 EqualityUtil
,然后创建以下内容:
public final class EqualityUtil {
private EqualityUtil() {}
public static boolean equalsIgnoreCaseAnyOf(String theString, String... theStrings) {
return Arrays.stream(theStrings).anyMatch(theString::equalsIgnoreCase);
}
}
有了这个,您可以简单地将一个字符串和 N 个字符串传递给您的作业。另外,它是一个实用程序 class,这意味着它可以在项目中重复使用。
如果你真的想写自己的东西,我可能会这样做:
public boolean equalsMultiple (Object myValue, Object [] objects) {
for (int i = 0; i < objects.length - 1; i++) {
if (myValue.equals(objects[i]))
return true;
}
return false;
}
并使用 Object 作为参数,以防您想对 Object 而不是 String 再次使用该方法。然后你可以这样使用它:
Object [] objects = new String [] {"option1","option2",
"option3"};
String myString = "option1";
System.out.println(equalsMultiple(myString,objects));
我想在使用 equals 方法时清理我的代码。我想知道是否有任何方法可以一次在 equals() 方法中添加更多参数。
目前,它看起来像这样:
if (myString.equalsIgnoreCase("option1") ||
myString.equalsIgnoreCase("option2") ||
myString.equalsIgnoreCase("option3"))
doSomething();
虽然我想要这样:
if (myString.equalsIgnoreCase("option1", "option2", "option3"))
doSomething();
有什么我可以做的吗?比如覆盖 equals() 方法或类似的方法?
创建一个包含可能值的列表(或类似列表),然后检查它是否包含您的字符串
List<String> foo = Arrays.asList("opt1", "opt2", "opt3");
String bar = "OPT1";
if (foo.contains(bar.toLowerCase())) {
doSomething();
}
您可以使用 Stream.anyMatch()
:
if (Stream.of("option1", "option2", "option3").anyMatch(myString::equalsIgnoreCase))
我的方法是创建一个 EqualityUtil
,然后创建以下内容:
public final class EqualityUtil {
private EqualityUtil() {}
public static boolean equalsIgnoreCaseAnyOf(String theString, String... theStrings) {
return Arrays.stream(theStrings).anyMatch(theString::equalsIgnoreCase);
}
}
有了这个,您可以简单地将一个字符串和 N 个字符串传递给您的作业。另外,它是一个实用程序 class,这意味着它可以在项目中重复使用。
如果你真的想写自己的东西,我可能会这样做:
public boolean equalsMultiple (Object myValue, Object [] objects) {
for (int i = 0; i < objects.length - 1; i++) {
if (myValue.equals(objects[i]))
return true;
}
return false;
}
并使用 Object 作为参数,以防您想对 Object 而不是 String 再次使用该方法。然后你可以这样使用它:
Object [] objects = new String [] {"option1","option2",
"option3"};
String myString = "option1";
System.out.println(equalsMultiple(myString,objects));