public static MultivaluedMap<String, String> decode(MultivaluedMap<String, String> map) {
        MultivaluedMapImpl<String, String> decoded = new MultivaluedMapImpl<String, String>();
        for (Map.Entry<String, List<String>> entry : map.entrySet()) {
            List<String> values = entry.getValue();
            for (String value : values) {
                try {
                    decoded.add(URLDecoder.decode(entry.getKey(), UTF_8), URLDecoder.decode(value, UTF_8));
                } catch (UnsupportedEncodingException e) {
                    throw new RuntimeException(e);
                }
            }
        }
        return decoded;
    }
public static MultivaluedMap<String, String> decode(MultivaluedMap<String, String> map) {
        MultivaluedMapImpl<String, String> decoded = new MultivaluedMapImpl<String, String>();
        for (Map.Entry<String, List<String>> entry : map.entrySet()) {
            List<String> values = entry.getValue();
            for (String value : values) {
                try {
                    decoded.add(URLDecoder.decode(entry.getKey(), UTF_8), URLDecoder.decode(value, UTF_8));
                } catch (UnsupportedEncodingException e) {
                    throw new RuntimeException(e);
                }
            }
        }
        return decoded;
    }
public static MultivaluedMap < String , String > decode ( MultivaluedMap < String , String > map ) { MultivaluedMapImpl < String , String > decoded = new MultivaluedMapImpl < String , String > ( ) ; for ( Map . Entry < String , List < String > > entry : map . entrySet ( ) ) { List < String > values = entry . getValue ( ) ; for ( String value : values ) { try { decoded . add ( URLDecoder . decode ( entry . getKey ( ) , UTF_8 ) , URLDecoder . decode ( value , UTF_8 ) ) ; } catch ( UnsupportedEncodingException e ) { throw new RuntimeException ( e ) ; } } } return decoded ; }
decode an encoded map

@param map
@return
decode an encoded map