У меня есть два списка, и мне нужно проверить максимальную ставку, и когда найду его, извлеките банкконверсионный пункт < /p>
for (BankConversionFees bankConversionFees : allFees) {
for (FeesHistory hist : bankConversionFee.getFeesHistory()) {
//check FeesHistory with max value of hist.getRate()
}
}
< /code>
Классы: < /p>
public class BankConversionFees{
private String name;
private List feesHistory;
}
public class FeesHistory {
private Double rate;
}
< /code>
Я достиг результата с кодом ниже, но я не уверен, является ли это лучшим способом < /p>
Comparator comparator = Comparator.comparingDouble(FeesHistory::getRate);
FeesHistory maxFees = allFees.stream() //
.filter(bank -> !bank.getFeesHistory().isEmpty()) //
.map(bank -> bank.getFeesHistory().stream().max(comparator).get()) //
.max(comparator).get();
Optional maxBank = allFees.stream() //
.filter(bank -> !bank.getFeesHistory().isEmpty()) //
.filter(bank -> bank.getFeesHistory().contains(maxFees)) //
.map(b -> b) //
.findFirst();
Подробнее здесь: https://stackoverflow.com/questions/647 ... ist-java-8