Java - 按正则表达式过滤列表条目

2022-09-02 14:13:35

我的代码如下所示:

List<String> filterList(List<String> list, String regex) {
  List<String> result = new ArrayList<String>();
  for (String entry : list) {
    if (entry.matches(regex)) {
      result.add(entry);
    }
  }
  return result;
}

它返回一个列表,该列表仅包含与 匹配的那些条目。我想知道是否有一个内置的函数,大致如下:regex

List<String> filterList(List<String> list, String regex) {
  List<String> result = new ArrayList<String>();
  result.addAll(list, regex);
  return result;
}

答案 1

除了来自Konstantin的答案之外:Java 8还通过对类添加了支持,该类在内部调用:PredicatePatternasPredicateMatcher.find()

Pattern pattern = Pattern.compile("...");

List<String> matching = list.stream()
                            .filter(pattern.asPredicate())
                            .collect(Collectors.toList());

真棒!


答案 2

在java 8中,您可以使用新的流API执行类似操作:

List<String> filterList(List<String> list, String regex) {
    return list.stream().filter(s -> s.matches(regex)).collect(Collectors.toList());
}