[java] String.equals() with multiple conditions (and one action on result)

Is it possible to do something like this in Java for Android (this is a pseudo code)

IF (some_string.equals("john" OR "mary" OR "peter" OR "etc."){
   THEN do something
}

?

At the moment this is done via multiple String.equals() condition with || among them.

This question is related to java android

The answer is


Your current implementation is correct. The suggested is not possible but the pseudo code would be implemented with multiple equal() calls and ||.


Keep the acceptable values in a HashSet and check if your string exists using the contains method:

Set<String> accept = new HashSet<String>(Arrays.asList(new String[] {"john", "mary", "peter"}));
if (accept.contains(some_string)) {
    //...
}

No,its check like if string is "john" OR "mary" OR "peter" OR "etc."

you should check using ||

Like.,,if(str.equals("john") || str.equals("mary") || str.equals("peter"))


If you develop for Android KitKat or newer, you could also use a switch statement (see: Android coding with switch (String)). e.g.

switch(yourString)
{
     case "john":
          //do something for john
     case "mary":
          //do something for mary
}

if (Arrays.asList("John", "Mary", "Peter").contains(name)) {
}
  • This is not as fast as using a prepared Set, but it performs no worse than using OR.
  • This doesn't crash when name is NULL (same with Set).
  • I like it because it looks clean

Pattern p = Pattern.compile("tom"); //the regular-expression pattern
Matcher m = p.matcher("(bob)(tom)(harry)"); //The data to find matches with

while (m.find()) {
    //do something???
}   

Use regex to find a match maybe?

Or create an array

 String[] a = new String[]{
        "tom",
        "bob",
        "harry"
 };

 if(a.contains(stringtomatch)){
     //do something
 }