Júlz Orienza
Júlz Orienza

Reputation: 3

Is there a way to merge this 2?

I'm running out of idea of how will I merge this 2 conditions, it has the same return so I need to merge

if ((StringUtils.isBlank(ext))) {
    return true;
}

for (String str : INVALID_EXTENSION_ARR) {
    if (ext.matches(str)) {
        return true;
    } else if (ext.matches(str.toLowerCase())) {
        return true;
    }
}

Upvotes: 0

Views: 57

Answers (3)

Bohemian
Bohemian

Reputation: 425128

You don't need a loop.

Populate INVALID_EXTENSION_ARR with values in lowercase:

private static final List<String> INVALID_EXTENSION_ARR = Arrays.asList("foo", "bar", "whatever"); // Note: All in lowercase!

Then it's just one line:

return StringUtils.isBlank(ext) || INVALID_EXTENSION_ARR.contains(ext.toLowerCase());

Note: I have assumed when you used matches() you meant to use equals().

——-

If the list of acceptable extensions is “large” (say, more than 10), you’ll get better performance if you use a Set instead of a List:

private static final Set<String> INVALID_EXTENSION_ARR = new HashSet<>(Arrays.asList("foo", "bar", "whatever"));

Or for recent java versions:

private static final Set<String> INVALID_EXTENSION_ARR = Set.of("foo", "bar", "whatever");

But you would be unlikely to notice much difference unless the size was more than say 100.

Upvotes: 3

Ramtin M. Seraj
Ramtin M. Seraj

Reputation: 705

It is helpful if you provide more context, but this is one of the ways you can compact it.

for (String str : INVALID_EXTENSION_ARR) {
    if (StringUtils.isBlank(ext) || ext.toLowerCase().matches(str.toLowerCase())) {
        return true;
    }
}

Upvotes: 0

Scary Wombat
Scary Wombat

Reputation: 44844

Assuming that the loop will always be entered into,

for (String str : INVALID_EXTENSION_ARR) {
    if (StringUtils.isBlank(ext) || ext.matches(str)) {
        return true;
    } else if (ext.matches(str.toLowerCase())) {
        return true;
    }
}

but I think that way that had it was easier to read and does not need to re-evaluate StringUtils.isBlank(ext) every time.

Upvotes: 0

Related Questions