Хотя в идеале я бы предпочел использовать , используя Predicate
, но если бы вы создали общий метод, который можно было бы использовать в нескольких ситуациях, вы могли бы сэкономить самостоятельно из обернуть BiPredicate
в Predicate
, используя следующий служебный метод:
private static boolean checkIfCurrencyPresent(Set<String> set, String currency) {
return set.contains(currency);
}
, а затем потребляет его, используя лямбду как:
boolean isCurrencyCodeValid = requestCurrencyCodes
.stream()
.anyMatch(a -> checkIfCurrencyPresent(currencyValues,a));
такой, что он не полагается на проверку строки на конкретном Set
, и вы можете использовать его достаточно обобщенно, как:
boolean isCurrencyCodeValidInverseExample = currencyValues // any collcetion of string
.stream()
.anyMatch(a -> checkIfCurrencyPresent(requestCurrencyCodes, a)); // different set as an input
В сторону : первые две строки вашего кода можно сделать более читабельными, например, (при условии названий моделей):
Set<String> currencyValues = currencies.getCurrencies().values()
.stream()
.map(CurrencyEntity::getNameOfSymbol)
.collect(Collectors.toSet());
Set<String> requestCurrencyCodes = globalPricingRequests.stream()
.map(GlobalPricingRequest::getCurrencyISOCode)
.collect(Collectors.toSet());