public static String compareMd5ResultString(List<String> changedGroupKeys) throws IOException {
        if (null == changedGroupKeys) {
            return "";
        }
        StringBuilder sb = new StringBuilder();
        for (String groupKey : changedGroupKeys) {
            String[] dataIdGroupId = GroupKey.parseKey(groupKey);
            sb.append(dataIdGroupId[0]);
            sb.append(WORD_SEPARATOR);
            sb.append(dataIdGroupId[1]);
            // if have tenant, then set it
            if (dataIdGroupId.length == SIZE_4) {
                if (StringUtil.isNotBlank(dataIdGroupId[2])) {
                    sb.append(WORD_SEPARATOR);
                    sb.append(dataIdGroupId[2]);
                }
            }
            sb.append(LINE_SEPARATOR);
        }
        return URLEncoder.encode(sb.toString(), "UTF-8");
    }
@Test
    public void compareMd5ResultStringEmptyTest() {
        String key = null;
        try {
            key = Md5ConfigUtil.compareMd5ResultString(new ArrayList<>());
        } catch (IOException ignored) {

        }
        Assert.isTrue(Objects.equals(StringUtil.EMPTY, key));
    }