【发布时间】:2024-01-29 04:20:02
【问题描述】:
用例
通过在工作中发布的一些编码 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 中访问 next。
return values.stream().filter(v -> v < next).collect(Collectors.toList());
问题
- 是否可以检索流中的下一个值?
- 我是否应该使用
map并映射到Pair才能访问下一个?
【问题讨论】:
标签: java java-8 java-stream