equalsIgnoreCase()方法中有多个参数

时间:2018-06-04 21:51:22

标签: java if-statement equals

当我使用equals方法时,我想清理我的代码。我想知道是否有办法在equals()方法中一次添加更多参数。

目前看起来像这样:

if (myString.equalsIgnoreCase("option1") || 
    myString.equalsIgnoreCase("option2") || 
    myString.equalsIgnoreCase("option3"))
        doSomething();

虽然我想这样:

if (myString.equalsIgnoreCase("option1", "option2", "option3"))
       doSomething();

我能做些什么吗?喜欢覆盖equals()方法或类似的东西?

4 个答案:

答案 0 :(得分:1)

您可以使用Stream.anyMatch()

if (Stream.of("option1", "option2", "option3").anyMatch(myString::equalsIgnoreCase))

答案 1 :(得分:0)

创建一个包含可能值的List(或类似),然后检查它是否包含您的字符串

List<String> foo = Arrays.asList("opt1", "opt2", "opt3");
String bar = "OPT1";
if (foo.contains(bar.toLowerCase())) {
    doSomething();
}

答案 2 :(得分:0)

我的方法是创建一个EqualityUtil,然后创建然后:

public final class EqualityUtil {

    private EqualityUtil() {}

    public static boolean equalsIgnoreCaseAnyOf(String theString, String... theStrings) {
        return Arrays.stream(theStrings).anyMatch(theString::equalsIgnoreCase);
    }

}

通过这个,你可以简单地将一个字符串和N个字符串传递给你的工作。此外,它是一个实用类,意味着可以在项目周围重复使用。

答案 3 :(得分:0)

如果你真的想写自己的东西,我可能会做这样的事情:

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作为参数,以防您再次使用该方法与String以外的Object。然后你可以像这样使用它:

    Object [] objects = new String [] {"option1","option2",
            "option3"};
    String myString = "option1";
    System.out.println(equalsMultiple(myString,objects));