有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用正则表达式筛选元素的正则表达式Java集合

我正在查看JavaAPI中是否有一个集合,在这里我可以检索以给定文本开头的元素

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

abc
abbb
adf
abab
dfg
cfg

如果我键入“a”,那么它应该返回以字符“a”开头的所有元素


共 (2) 个答案

  1. # 1 楼答案

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

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

    还有一些第三方库也允许过滤收藏:

    • 番石榴酱
    • ^来自Apache Commons集合的{a2}

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


    或者简单地使用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);
        }
     }
    
  2. # 2 楼答案

    你不需要正则表达式。在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();