Java 为每个或联接使用筛选器
我有一种方法可以找到操作符的位置Java 为每个或联接使用筛选器,java,java-8,Java,Java 8,我有一种方法可以找到操作符的位置 public Optional<Integer> findToken(Character operator) { return tokenList.stream() .filter(x -> { return x.position >= startPosition && x.position <= endP
public Optional<Integer> findToken(Character operator) {
return tokenList.stream()
.filter(x -> {
return x.position >= startPosition &&
x.position <= endPosition &&
x.operator == operator;
})
.findFirst()
.map(t -> t.position);
}
public可选findToken(字符运算符){
返回tokenList.stream()
.过滤器(x->{
返回x.position>=开始位置&&
x、 位置t.位置);
}
我不想每次只传递一个运算符,而是希望传递几个不同的运算符。我已将运算符列表附加到数组中。是否有方法使用联接运算符或每个语法循环遍历列表并找到位置。我不确定为什么要使用forEach()的联接,但这里有一个使用Set.contains()的解决方案:
公共列表findTokens(字符运算符[]){
Set=newhashset();
set.addAll(Arrays.asList(操作符));
返回tokenList.stream()
.过滤器(x->{
返回x.position>=开始位置&&
x、 位置(t.position)
.collect(Collectors.toList());
}
您能提供输入和输出示例吗?
public List<Integer> findTokens(Character operators[]) {
Set<Character> set = new HashSet<>();
set.addAll(Arrays.asList(operators));
return tokenList.stream()
.filter(x -> {
return x.position >= startPosition &&
x.position <= endPosition &&
set.contains(x.operator);
})
.map(t -> t.position)
.collect(Collectors.toList());
}