java从Map中模糊匹配key值

Posted 王啸tr1912

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java从Map中模糊匹配key值相关的知识,希望对你有一定的参考价值。

如果我们想要从一个map集合中,模糊筛选出我们想要的key的集合应该如何处理呢?下面一个小例子解决此问题,但是性能上有待提高:

核心代码:

/**
 * 从map中查询想要的map项,根据key
 */
public static Map<String, Object> parseMapForFilter(Map<String, Object> map,String filters) 
    if (map == null) 
        return null;
     else 
        map = map.entrySet().stream()
                .filter((e) -> checkKey(e.getKey(),filters))
                .collect(Collectors.toMap(
                        (e) -> (String) e.getKey(),
                        (e) -> e.getValue()
                ));
    
    return map;


/**
 * 通过indexof匹配想要查询的字符
 */
private static boolean checkKey(String key,String filters) 
    if (key.indexOf(filters)>-1)
        return true;
    else 
        return false;
    

此代码通过entryset进行遍历,找出其中可以匹配的项目,然后再重新collect成我们想要的map,示例:

public static void main(String[] args)
    Map<String,Object> params = new HashMap<>(16);
    params.put("a-1","1");
    params.put("a-2","2");
    params.put("a-3","3");
    params.put("b-1","1");
    params.put("b-2","2");
    params.put("b-3","3");
    params.put("c-1","1");
    params.put("c-2","2");
    params.put("c-3","3");

    Map<String, Object> a = parseMapForFilter(params, "a");
    System.out.println(JSON.toJSONString(a));

结果:

以上是关于java从Map中模糊匹配key值的主要内容,如果未能解决你的问题,请参考以下文章

Redis 之用 scan 模糊匹配 key

key值与value值的匹配

java中是如何实现基于文字标题的模糊匹配的,下面的代码是实现这个功能的吗?

Java程序如何模糊匹配access数据库,然后access返回一个相应值

java中的不同的key类型从map中获取不同的value值

从合并两个Map说开去 - foldLeft 和 foldRight 还有模式匹配