0

如何在不使用循环的情况下重写以下表达式?

Pattern pattern = Pattern.compile(filterRegEx);
Matcher regexMatcher = pattern.matcher("(.*)");

for (String word : words) {
    if (pattern.matcher(word).matches()) {
        foundList.add(word);
    }
}
4

1 回答 1

0

如果您想避免使用循环,则需要使用某种形式的函数式编程。Java 8 在这方面会有一些新特性,但现在你可以使用 Google Guava 的Collections2#filter(or Iterables#filter) 方法;它允许您指定条件(例如pattern.matcher(word).matches())并选择集合中匹配的元素。

请注意,该对象将“通读”返回到原始集合,因此ArrayList(Collection)如果您需要保留过滤列表,则需要制作它们的副本(例如 with )。

于 2013-10-01T09:00:53.207 回答