public static String generateParamStringWithValueList(Map<String, List<String>> map) {
    return map.entrySet().stream()
        .sorted(Map.Entry.comparingByKey())
        .map(
            entry -> {
              List<String> sortedValues =
                  entry.getValue().stream()
                      .filter(value -> !StringUtils.isBlank(value))
                      .sorted()
                      .collect(Collectors.toList());

              try {
                return sortedValues.isEmpty()
                    ? ""
                    : entry.getKey() + URLDecoder.decode(sortedValues.get(0), "utf-8");
              } catch (UnsupportedEncodingException e) {
                throw new RuntimeException("Calculate signature failed", e);
              }
            })
        .collect(Collectors.joining());
  }
Arranges argument pairs in ascending order, removes null values and concatenates them Example:
params: name=&value=111&age=11&sex=1&high=180&nick= The result is: age11high180sex1value111

@param map The map to process
@return The resulting string
amoro-ams/src/main/java/org/apache/amoro/server/dashboard/utils/ParamSignatureCalculator.java