lig*_*eed 3 java java-8 java-stream
我有一个方法可以找到一个运算符并返回新位置。
public Integer findToken(Character operator) {
try {
return tokenList.stream()
.filter(x -> {
return x.position >= startPosition &&
x.position <= endPosition &&
x.operator == operator;
})
.findFirst().get()
.position;
} catch (Exception ex) {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
但如果没有匹配项,我希望它保留旧值。
startPosition = findToken(Operator.value);
Run Code Online (Sandbox Code Playgroud)
我如何返回旧值?我尝试用方法中的值提供一个新参数并将其传递到异常中,但代码看起来很丑陋。有没有更好的办法 ?
您可能想使用orElse()方法。
将结果存储到临时变量中直到findFirst,然后执行其他操作并返回。
例如
List<Integer> values = Arrays.asList(2, 4, 5, 6, 7, 1);
Integer i= values.stream()
.filter(x->x<1)
.findFirst().orElse(0);
System.out.println(i);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
933 次 |
| 最近记录: |