src/org/nutz/lang/util/NutMap.java
@Override
    public NutMap pickBy(Pattern p, boolean isNot) {
        // 一定不匹配
        if (null == p) {
            return isNot ? this.duplicate() : new NutMap();
        }

        // 挑选
        NutMap re = new NutMap();
        for (Map.Entry<String, Object> en : this.entrySet()) {
            String key = en.getKey();
            boolean matched = p.matcher(key).find();
            if (matched) {
                if (!isNot) {
                    re.put(key, en.getValue());
                }
            } else if (isNot) {
                re.put(key, en.getValue());
            }
        }

        // 返回
        return re;
    }
@Override
    public NutMap pickBy(Pattern p, boolean isNot) {
        // 一定不匹配
        if (null == p) {
            return isNot ? this.duplicate() : new NutMap();
        }

        // 挑选
        NutMap re = new NutMap();
        for (Map.Entry<String, Object> en : this.entrySet()) {
            String key = en.getKey();
            boolean matched = p.matcher(key).find();
            if (matched) {
                if (!isNot) {
                    re.put(key, en.getValue());
                }
            } else if (isNot) {
                re.put(key, en.getValue());
            }
        }

        // 返回
        return re;
    }
@ Override public NutMap pickBy ( Pattern p , boolean isNot ) { // 一定不匹配
 if ( null == p ) { return isNot ? this . duplicate ( ) : new NutMap ( ) ; } // 挑选
 NutMap re = new NutMap ( ) ; for ( Map . Entry < String , Object > en : this . entrySet ( ) ) { String key = en . getKey ( ) ; boolean matched = p . matcher ( key ) . find ( ) ; if ( matched ) { if ( ! isNot ) { re . put ( key , en . getValue ( ) ) ; } } else if ( isNot ) { re . put ( key , en . getValue ( ) ) ; } } // 返回
 return re ; }
从 Map 里挑选一些键生成一个新的 Map

@param p
匹配键的正则表达式，null 不会匹配任何一个键
@param isNot
true 表示被匹配上的会被忽略，false 表示被匹配上的才加入到返回的集合里
@return 新 Map
从 Map 里挑选一些键生成一个新的 Map