如何根据java中的模式匹配在地图中找到关键字

нαƒ*_*єєz 17 java regex

我想在模式匹配的地图中找到键.

Ex:-   
    Map<String, String> map = new HashMap<String, String>();
    map.put("address1", "test test test");
    map.put("address2", "aaaaaaaaaaa");
    map.put("fullname", "bla bla");
Run Code Online (Sandbox Code Playgroud)

从上面的地图,我想得到前缀为"地址"的键值.因此,在此示例中,输出应该是前两个结果("address1"和"address2").

我怎样才能动态实现这个目标?

谢谢.

Ale*_* C. 21

您可以获取keySet地图,然后过滤以仅获取以"地址"开头的键,并将有效键添加到新集.

使用Java 8,它有点简洁:

Set<String> set = map.keySet()
                     .stream()
                     .filter(s -> s.startsWith("address"))
                     .collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)


Pin*_*hio 8

如果你有Java 8的功能,这样的东西应该工作:

    Set<String> addresses = map.entrySet()
                               .stream()
                               .filter(entry -> entry.getKey().startsWith("address"))
                               .map(Map.Entry::getValue)
                               .collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)


Ava*_*che 5

像这样的东西:

    for (Entry<String, String> entry : map.entrySet()) {
        if (entry.getKey().startsWith("address")) {
            // do stuff with entry
        }
    }
Run Code Online (Sandbox Code Playgroud)

  • 那应该是 `entry.getKey()...` 而不是 `entry.getValue()...`。 (2认同)