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());
}