Ben*_*ler 12 java regex collections
我的代码看起来像这样:
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;
}
Run Code Online (Sandbox Code Playgroud)
它返回一个列表,其中只包含与之匹配的条目regex.我想知道是否有这样的内置功能:
List<String> filterList(List<String> list, String regex) {
List<String> result = new ArrayList<String>();
result.addAll(list, regex);
return result;
}
Run Code Online (Sandbox Code Playgroud)
sch*_*eld 57
除了康斯坦丁的答案之外:Java 8还增加Predicate了对Pattern类的支持asPredicate,Matcher.find()内部调用:
Pattern pattern = Pattern.compile("...");
List<String> matching = list.stream()
.filter(pattern.asPredicate())
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
太棒了!
Kon*_*hov 19
在java 8中,您可以使用新的流API执行以下操作:
List<String> filterList(List<String> list, String regex) {
return list.stream().filter(s -> s.matches(regex)).collect(Collectors.toList());
}
Run Code Online (Sandbox Code Playgroud)