Выполнять код только в том случае, если для каждого цикла не найдено совпадение? - PullRequest
0 голосов
/ 10 июня 2018

Что я могу изменить с помощью этого кода, чтобы, если не найдено совпадений в objectList, какой-нибудь код запустился?не могу обернуть мою голову.

Ответы [ 3 ]

0 голосов
/ 10 июня 2018

Используйте простой логический флаг

boolean found = false;
for (Object o : objectList) {
   if (o.someValue()).equals(o2.someValue())) {
    // Do stuff
    found = true;
   }
}

if (!found) {
 //Do your stuff when it was not found
} 
0 голосов
/ 10 июня 2018

Вы можете использовать поддержку потоков, например ...

Object match = objectList.stream().filter(o -> o.someValue()).equals(o2.someValue())).orElse(null);
if (match == null) {
    // No matches...
}

Изначально я думал о чем-то подобном (или даже использовать anyMatch), но кажется, что OPхочет что-то сделать для каждого совпадения (// Делать вещи)

Хорошо, так что вы можете использовать anyMatch, чтобы «посмотреть», чтобы увидеть, есть ли «какие-либо» совпадения в потоке и сделатьрешение, основанное на этом, например ...

List<String> objectList = new ArrayList<String>(5);
objectList.add("A");
objectList.add("B");
objectList.add("C");
objectList.add("D");
objectList.add("A");
objectList.add("E");
objectList.add("F");
objectList.add("A");
objectList.add("G");
objectList.add("H");
objectList.add("I");
objectList.add("J");
objectList.add("A");
objectList.add("K");
objectList.add("A");
objectList.add("M");

if (objectList.stream().anyMatch(o -> o.equals("A"))) {
    objectList.stream().filter(o -> o.equals("A")).forEach(o -> System.out.println(o));
} else {
    // No matches
}
0 голосов
/ 10 июня 2018

Просто используйте флаг boolean, чтобы отслеживать, найдено или нет совпадение, что-то вроде этого:

boolean match = false;
for (Object o : objectList) {
    if (o.someValue()).equals(o2.someValue())) {
        match true;
        break;       // no point in iterating further
    }
}

if (!match) {
    System.out.println("No match was found in the list.");
}

Если вы используете Java 8, то есть однострочнаяВы можете использовать с потоками:

boolean match = objectList.stream()
        .anyMatch(t -> t.someValue().equals(o2.someValue()));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...