карта
<R> Stream<R> map(Function<? super T,? extends R> mapper)
Возвращает поток, состоящий из результатов применения данной функции к элементам этого потока.
Это промежуточная операция.
Поэтому я предлагаю создать два разных List
, один для feePerReg
, а другой для feePerRevenue
feePerReg
List<BigDecimal> feeperReg = globalPricingRequests.stream().flatMap(eventPrice->eventPrice.getEventTypePricingList().stream()).map(eventType->eventType.getFeePerReg()).collect(Collectors.toList());
feePerRevenue
List<BigDecimal> feePerRevenue = globalPricingRequests.stream().flatMap(eventPrice->eventPrice.getEventTypePricingList().stream()).map(eventType->eventType.getFeePerRevenue()).collect(Collectors.toList());
Предикат Предикат для проверки обоих списков
Predicate<BigDecimal> criteria = value -> value != null && value.signum() < 0;
verifyFeePerRegAndFeePerRevenue метод, который принимает два List<BigDecimal>
в качестве аргумента
private static boolean verifyFeePerRegAndFeePerRevenue(List<BigDecimal> feePerReg, List<BigDecimal> feePerRevenue) {
Predicate<BigDecimal> criteria = value -> value != null && value.signum() < 0;
return feePerReg.stream().anyMatch(criteria) && feePerRevenue.stream().anyMatch(criteria);
}
Дело 2
Вместо двух разных List
вы можете иметь только один список с условиями eventTypePricingMapping
и Predicate
для feePerReg
и feePerRevenue
eventTypePricingMapping
List<EventTypePricingMapping> result = globalPricingRequests.stream().flatMap(eventPrice->eventPrice.getEventTypePricingList().stream()).collect(Collectors.toList());
Предикат Предикат для проверки обоих
Predicate<EventTypePricingMapping> criteria = value -> value.getFeePerRevenue() != null && value.getFeePerReg()!= null && value.getFeePerRevenue() < 0 && value.getFeePerReg < 0;
verifyFeePerRegAndFeePerRevenue метод занимает List<EventTypePricingMapping>
применять Predicate
в списке
private static boolean verifyFeePerRegAndFeePerRevenue(List<EventTypePricingMapping> price) {
Predicate<EventTypePricingMapping> criteria = value -> value.getFeePerRevenue() != null && value.getFeePerReg()!= null && value.getFeePerRevenue() < 0 && value.getFeePerReg < 0;
return price.stream().anyMatch(criteria);
}