code: private static String getOrderedMapString(Map<Object, Object> map) {
  		ArrayList<String> list = new ArrayList<String>();
  		for (Map.Entry<Object, Object> entry : map.entrySet()) {
  			if (entry.getValue() != null) {
  				Object key = entry.getKey();
  				Object value = entry.getValue();
  				String objectString = getObjectString(value);
  				if (!StringUtils.isEmpty(objectString)) {
  					list.add(getObjectString(key) + "=" + objectString + "&");
  				}
  
  			}
  		}
  		int size = list.size();
  		String[] arrayToSort = list.toArray(new String[size]);
  		Arrays.sort(arrayToSort, String.CASE_INSENSITIVE_ORDER);
  		StringBuilder sb = new StringBuilder();
  		for (int i = 0; i < size; i++) {
  			sb.append(arrayToSort[i]);
  		}
  		return "{" + sb.toString() + "}";
  	}
docs: 将Object按照key1=value1&key2=value2的形式拼接起来，程序不递归。Value需为基本类型，
  或者其toString方法能表示其实际的值
  
  @param o
  @return