you can make the code prettier with loops as shown.
You can combine the comparisons into one statement (if cond1 && cond2 && .... condN).
you can make it incomprehensible with bitwise logic, or even boil it down to a single integer comparison. For example you can stuff 4 1-byte values into a 4 byte int and check that against an int pointer cast of values. That is just ugly but it does reduce to a single check. 5 bytes for the suits gets you a flush check.
you can also make them strings and simply do a single == check. Or write your own class with comparisons to do an == check.
I recommend a balance of being able to understand it against a deeply nested condition given that it does not seem like you need to speed it up.
Another approach:
switch(a +2* b) {
case 0: //a false, b false
case 1: // a true, b false
case2: // a false, b true
case3: // a true, b true
}
This is one of a collection of techniques seldom seen but always useful.