使用For Each或Joins过滤

时间:2015-08-09 15:55:37

标签: java java-8

我有一种方法可以找到操作员的位置。

private Thread thread = new Thread() {
    @Override
    public void run() {//...
        }
    }
};

我不想传递单个运算符,而是希望每次都传递一些不同的运算符。我已将运算符列表附加到数组上。有没有办法使用JOIN运算符或For each语法遍历列表并找到位置。

1 个答案:

答案 0 :(得分:2)

我不确定为什么要使用forEach()的JOIN,但这是使用Set.contains()的解决方案:

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