如何使用 Java 8 流查找较大值之前的所有值?用例
2022-09-01 04:23:56
用例
通过在工作中发布的一些编码Katas,我偶然发现了这个我不知道如何解决的问题。
使用 Java 8 Streams,给定一个正整数列表,生成一个整数列表,其中整数在较大的值之前。
[10, 1, 15, 30, 2, 6]
上述输入将产生:
[1, 15, 2]
因为 1 先于 15,15 先于 30,2 先于 6。
非流解决方案
public List<Integer> findSmallPrecedingValues(final List<Integer> values) {
List<Integer> result = new ArrayList<Integer>();
for (int i = 0; i < values.size(); i++) {
Integer next = (i + 1 < values.size() ? values.get(i + 1) : -1);
Integer current = values.get(i);
if (current < next) {
result.push(current);
}
}
return result;
}
我尝试过什么
我遇到的问题是我不知道如何在lambda中访问下一个。
return values.stream().filter(v -> v < next).collect(Collectors.toList());
问题
- 是否可以检索流中的下一个值?
- 我应该使用并映射到 a 才能访问下一个吗?
map
Pair