Выполните итерацию двух списков, чтобы найти совпадение и вернуть логическое значение, используя java8 - PullRequest
2 голосов
/ 02 апреля 2020

У меня есть два списка, как показано ниже

List<String> pathNames = Lists.newArrayList("/state", "/country", "/country/name");
List<String> newPaths = Lists.newArrayList("/country/name");

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

if(CollectionUtils.isNotEmpty(pathNames)) {
    for (String path : newPaths) {
        for (String reqPath: pathNames) {
            if(FilenameUtils.wildcardMatch(path, reqPath)) {
               return true;
            }
        }
    }
}

Но Я хочу провести рефакторинг и сделать то же самое в Java8, любая помощь может быть высоко оценена.

1 Ответ

4 голосов
/ 02 апреля 2020

Вы можете использовать потоковый конвейер в обоих списках и вызывать anyMatch:

return CollectionUtils.isNotEmpty(pathNames) &&
       newPaths.stream().anyMatch(np -> 
          pathNames.stream().anyMatch(pn -> FilenameUtils.wildcardMatch(np, pn)));
...