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());
还有允许过滤集合的第三方库:
- 番石榴的
Collections2#filter
.
ColectionUtils#filter
来自 Apache Commons Collections。
链接的 Java 文档描述准确地解释了每种方法如何进行过滤(即它是修改给定的集合,还是 returns 一个新集合)。
或简单地使用 for
循环(java-7 及之前):
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();
我正在寻找 java API 中是否有一个集合,我可以在其中检索以某些给定文本开头的元素。
例如,如果我在集合中有以下元素
abc
abbb
adf
abab
dfg
cfg
如果我输入 "a",那么它应该 return 所有以字符 "a" 开头的元素。
没有集合可以为您提供这种开箱即用的过滤功能,但您可以做一个简单的管道(需要 Java 8):
filteredList = collection.stream()
.filter(e -> e.startsWith("a"))
.collect(Collectors.toList());
还有允许过滤集合的第三方库:
- 番石榴的
Collections2#filter
. ColectionUtils#filter
来自 Apache Commons Collections。
链接的 Java 文档描述准确地解释了每种方法如何进行过滤(即它是修改给定的集合,还是 returns 一个新集合)。
或简单地使用 for
循环(java-7 及之前):
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();