我正在寻找java API中是否有一个集合,我可以在其中检索以某些给定文本开头的元素。
例如,如果我在集合中有以下元素
abc
abbb
adf
abab
dfg
cfg
如果我输入“a”,那么它应该返回以字符“a”开头的所有元素。
答案 0 :(得分:3)
您不需要正则表达式。在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();
答案 1 :(得分:2)
没有任何集合可以为您提供开箱即用的过滤功能,但您可以执行简单的管道(需要Java 8):
filteredList = collection.stream()
.filter(e -> e.startsWith("a"))
.collect(Collectors.toList());
还有第三方库允许过滤集合:
Collections2#filter
。ColectionUtils#filter
。链接的Javadoc描述确切地解释了每个方法如何进行过滤(即它是否修改了给定的集合,或者它返回了一个新的。)
或者只是简单地使用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);
}
}