Java 使用正则表达式过滤元素的集合

Java Collections to filter element using regular expression

我正在寻找 java API 中是否有一个集合,我可以在其中检索以某些给定文本开头的元素。

例如,如果我在集合中有以下元素

abc
abbb
adf
abab
dfg
cfg

如果我输入 "a",那么它应该 return 所有以字符 "a" 开头的元素。

没有集合可以为您提供这种开箱即用的过滤功能,但您可以做一个简单的管道(需要 Java 8):

filteredList = collection.stream()
                         .filter(e -> e.startsWith("a"))
                         .collect(Collectors.toList());

还有允许过滤集合的第三方库:

链接的 Java 文档描述准确地解释了每种方法如何进行过滤(即它是修改给定的集合,还是 returns 一个新集合)。


或简单地使用 for 循环( 及之前):

List<String> filteredList = new ArrayList<String>();
for(Iterator<String> iterator = collection.iterator(); iterator.hasNext();) {
    String str = iterator.next();
    if(str.startsWith("a")) {
        filteredList.add(str);
    }
 }

您不需要正则表达式。在前 Java 8:

Collection<String> strings; // given this
String filter = "a";
for (Iterator<String> i = strings.iterator(); i.hasNext();)
    if (i.next().startsWith(filter))
        i.remove();