如何使用 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 才能访问下一个吗?mapPair
 
					 
				 
				    		 
				    		