Как я могу написать блок if, используя лямбду? - PullRequest
0 голосов
/ 09 апреля 2020

Не могли бы вы сказать мне, как я могу написать это выражение, используя лямбда / Java 8?

String str = "Hello";
String x = "1"; 

if(str.equals("Hello") || str.equals("Helloo") || 
         str.equals("Hellooo") || str.equals("Hellooo...")) {
   if(x != null) {
       // do something
   } else {
       // do something else 
   }
}

1 Ответ

5 голосов
/ 09 апреля 2020

Вы можете использовать Набор для хранения всех ваших приветствий, а затем использовать filter и ifPresent для выполнения вашего условия:

Stream.of("Hello", "Helloo", "Hellooo", "Hellooo...")
        .filter(str::equals)
        .findAny()
        .ifPresent(c -> {
            if (x != null) {
                // do something
            } else {
                // do something else
            }
        });

Но в вашем случае я хотел бы использовать:

if (str.matches("Hell[o]{1,4}(\\.{4})?")) {
    if (x != null) {
        // do something
    } else {
        // do something else
    }
}

Что касается регулярного выражения, вы можете улучшить его на основе ваших входных данных, я сделал быстрый, чтобы показать вам другое решение.

...