public Map<String, Object> sub(Map<String, Object> data, String prefix, String exclusiveAttrNames,
      boolean stripPrefix) {
    Set<String> excludes = CollectUtils.newHashSet();
    if (Strings.isNotEmpty(exclusiveAttrNames)) {
      String[] exclusiveAttrs = Strings.split(exclusiveAttrNames, ",");
      for (int i = 0; i < exclusiveAttrs.length; i++) {
        excludes.add(exclusiveAttrs[i]);
      }
    }
    Map<String, Object> newParams = CollectUtils.newHashMap();
    for (final Map.Entry<String, Object> entry : data.entrySet()) {
      final String attr = entry.getKey();
      if ((attr.indexOf(prefix + ".") == 0) && (!excludes.contains(attr))) {
        newParams.put((stripPrefix ? attr.substring(prefix.length() + 1) : attr), get(data, attr));
      }
    }
    return newParams;
  }
public Map < String , Object > sub ( Map < String , Object > data , String prefix , String exclusiveAttrNames , boolean stripPrefix ) { Set < String > excludes = CollectUtils . newHashSet ( ) ; if ( Strings . isNotEmpty ( exclusiveAttrNames ) ) { String [ ] exclusiveAttrs = Strings . split ( exclusiveAttrNames , "," ) ; for ( int i = 0 ; i < exclusiveAttrs . length ; i ++ ) { excludes . add ( exclusiveAttrs [ i ] ) ; } } Map < String , Object > newParams = CollectUtils . newHashMap ( ) ; for ( final Map . Entry < String , Object > entry : data . entrySet ( ) ) { final String attr = entry . getKey ( ) ; if ( ( attr . indexOf ( prefix + "." ) == 0 ) && ( ! excludes . contains ( attr ) ) ) { newParams . put ( ( stripPrefix ? attr . substring ( prefix . length ( ) + 1 ) : attr ) , get ( data , attr ) ) ; } } return newParams ; }
<p>
sub.
</p>

@param data a {@link java.util.Map} object.
@param prefix a {@link java.lang.String} object.
@param exclusiveAttrNames a {@link java.lang.String} object.
@param stripPrefix a boolean.
@return a {@link java.util.Map} object.