给定价格列表,我想找到超过某个最小价格的最大价格的索引。我当前的解决方案如下所示:
public class Price {
public static Integer maxPriceIndex(List<Integer> prices, Integer minPrice) {
OptionalInt maxPriceIndexResult = IntStream.range(0, prices.size())
.reduce((a, b) -> prices.get(a) > prices.get(b) ? a : b);
if (maxPriceIndexResult.isPresent()) {
int maxPriceIndex = maxPriceIndexResult.getAsInt();
int maxFuturePrice = prices.get(maxPriceIndex);
if (maxFuturePrice > minPrice) {
return maxPriceIndex;
}
}
return null;
}
public static void main(String[] args) {
List<Integer> prices = Arrays.asList(5, 3, 2);
Integer result = maxPriceIndex(prices, 6);
System.out.println("Final result: " + result);
}
}
我不喜欢命令性代码和功能性代码的这种混合,但是无法找到改变减速器的方法,以便它也可以将价格与
minPrice
进行比较。是否有针对此问题的纯功能解决方案? 最佳答案
您可以在找到最大值之前进行过滤。
IntStream.range(0, prices.size())
.filter(i -> prices.get(i) > minPrice)
.reduce((a, b) -> prices.get(a) > prices.get(b) ? a : b);
关于java - 在列表中查找超过恒定值的最大项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57290142/