【java】从Map中模糊匹配key值

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

核心代码:

/**
 * 从map中查询想要的map项,根据key
 */
public static Map parseMapForFilter(Map 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 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 a = parseMapForFilter(params, "a");
    System.out.println(JSON.toJSONString(a));

}

结果:

【java】从Map中模糊匹配key值_第1张图片

你可能感兴趣的:(Java学习)