根据条件将值放在不同的hashmap中
Put value in different hashmap according to condition
我有下面提到的这 3 个函数,这些函数的唯一区别是不同的 hashmap,我可以将它变成一个函数吗?从 redefineHeaderParameters 我得到了 hashmap 的名称并动态放置键值
public void redefineHeaderParameters(String condition, String parameterName) {
if (condition.equalsIgnoreCase("invalid")) {
headerParameters.put(parameterName, RandomStringUtils.randomAlphabetic(6));
} else if (condition.equalsIgnoreCase("incorrect")) {
headerParameters.put(parameterName, correctParameter.get(parameterName).replaceAll(
correctParameter.get(parameterName).substring(2, 7), RandomStringUtils.randomAlphabetic(5)));
} else if (condition.equalsIgnoreCase("null")) {
headerParameters.put(parameterName, null);
} else if (condition.equalsIgnoreCase("expired") || condition.equalsIgnoreCase("expire")) {
headerParameters.put(parameterName, expiredParameter.get(parameterName));
}
}
public void redefineQueryParameters(String condition, String parameterName) {
if (condition.equalsIgnoreCase("invalid")) {
queryParameters.put(parameterName, RandomStringUtils.randomAlphabetic(6));
} else if (condition.equalsIgnoreCase("incorrect")) {
queryParameters.put(parameterName, correctParameter.get(parameterName).replaceAll(
correctParameter.get(parameterName).substring(2, 7), RandomStringUtils.randomAlphabetic(5)));
} else if (condition.equalsIgnoreCase("null")) {
queryParameters.put(parameterName, null);
System.out.println(queryParameters);
} else if (condition.equalsIgnoreCase("expired") || condition.equalsIgnoreCase("expire")) {
queryParameters.put(parameterName, expiredParameter.get(parameterName));
}
}
public void redefineBodyParameters(String condition, String parameterName) {
if (condition.equalsIgnoreCase("invalid")) {
bodyParameters.put(parameterName, RandomStringUtils.randomAlphabetic(6));
} else if (condition.equalsIgnoreCase("incorrect")) {
bodyParameters.put(parameterName, correctParameter.get(parameterName).replaceAll(
correctParameter.get(parameterName).substring(2, 7), RandomStringUtils.randomAlphabetic(5)));
} else if (condition.equalsIgnoreCase("null")) {
bodyParameters.put(parameterName, null);
} else if (condition.equalsIgnoreCase("expired") || condition.equalsIgnoreCase("expire")) {
bodyParameters.put(parameterName, expiredParameter.get(parameterName));
}
}
正如评论中提到的 tgdavies,您可以将地图传递给方法:
public void redefineParameters(HashMap<String, String> map, String condition, String parameterName) {
if (condition.equalsIgnoreCase("invalid")) {
map.put(parameterName, RandomStringUtils.randomAlphabetic(6));
} else if (condition.equalsIgnoreCase("incorrect")) {
map.put(parameterName, correctParameter.get(parameterName).replaceAll(
correctParameter.get(parameterName).substring(2, 7), RandomStringUtils.randomAlphabetic(5)));
} else if (condition.equalsIgnoreCase("null")) {
map.put(parameterName, null);
} else if (condition.equalsIgnoreCase("expired") || condition.equalsIgnoreCase("expire")) {
map.put(parameterName, expiredParameter.get(parameterName));
}
}
或者,将通用方法设为私有并命名包装器:
public void redefineHeaderParameters(String condition, String parameterName) {
redefineParameters(headerParameters, condition, parameterName);
}
public void redefineQueryParameters(String condition, String parameterName) {
redefineParameters(queryParameters, condition, parameterName);
}
public void redefineBodyParameters(String condition, String parameterName) {
redefineParameters(bodyParameters, condition, parameterName);
}
private void redefineParameters(Map<String, String> map, String condition, String parameterName) {
if (condition.equalsIgnoreCase("invalid")) {
map.put(parameterName, RandomStringUtils.randomAlphabetic(6));
} else if (condition.equalsIgnoreCase("incorrect")) {
map.put(parameterName, correctParameter.get(parameterName).replaceAll(
correctParameter.get(parameterName).substring(2, 7), RandomStringUtils.randomAlphabetic(5)));
} else if (condition.equalsIgnoreCase("null")) {
map.put(parameterName, null);
} else if (condition.equalsIgnoreCase("expired") || condition.equalsIgnoreCase("expire")) {
map.put(parameterName, expiredParameter.get(parameterName));
}
}
另一种选择,如果映射不在调用者的范围内,则传递另一个参数以指示它是哪种类型的参数:
public enum ParameterType { HEADER, QUERY, BODY };
public void redefineParameters(ParameterType parameterType, String condition, String parameterName) {
Map<String, String> map;
switch (parameterType) {
case HEADER:
map = headerParameters;
break;
case QUERY:
map = queryParameters;
break;
case BODY:
map = bodyParameters;
break;
}
if (condition.equalsIgnoreCase("invalid")) {
map.put(parameterName, RandomStringUtils.randomAlphabetic(6));
} else if (condition.equalsIgnoreCase("incorrect")) {
map.put(parameterName, correctParameter.get(parameterName).replaceAll(
correctParameter.get(parameterName).substring(2, 7), RandomStringUtils.randomAlphabetic(5)));
} else if (condition.equalsIgnoreCase("null")) {
map.put(parameterName, null);
} else if (condition.equalsIgnoreCase("expired") || condition.equalsIgnoreCase("expire")) {
map.put(parameterName, expiredParameter.get(parameterName));
}
}
我有下面提到的这 3 个函数,这些函数的唯一区别是不同的 hashmap,我可以将它变成一个函数吗?从 redefineHeaderParameters 我得到了 hashmap 的名称并动态放置键值
public void redefineHeaderParameters(String condition, String parameterName) {
if (condition.equalsIgnoreCase("invalid")) {
headerParameters.put(parameterName, RandomStringUtils.randomAlphabetic(6));
} else if (condition.equalsIgnoreCase("incorrect")) {
headerParameters.put(parameterName, correctParameter.get(parameterName).replaceAll(
correctParameter.get(parameterName).substring(2, 7), RandomStringUtils.randomAlphabetic(5)));
} else if (condition.equalsIgnoreCase("null")) {
headerParameters.put(parameterName, null);
} else if (condition.equalsIgnoreCase("expired") || condition.equalsIgnoreCase("expire")) {
headerParameters.put(parameterName, expiredParameter.get(parameterName));
}
}
public void redefineQueryParameters(String condition, String parameterName) {
if (condition.equalsIgnoreCase("invalid")) {
queryParameters.put(parameterName, RandomStringUtils.randomAlphabetic(6));
} else if (condition.equalsIgnoreCase("incorrect")) {
queryParameters.put(parameterName, correctParameter.get(parameterName).replaceAll(
correctParameter.get(parameterName).substring(2, 7), RandomStringUtils.randomAlphabetic(5)));
} else if (condition.equalsIgnoreCase("null")) {
queryParameters.put(parameterName, null);
System.out.println(queryParameters);
} else if (condition.equalsIgnoreCase("expired") || condition.equalsIgnoreCase("expire")) {
queryParameters.put(parameterName, expiredParameter.get(parameterName));
}
}
public void redefineBodyParameters(String condition, String parameterName) {
if (condition.equalsIgnoreCase("invalid")) {
bodyParameters.put(parameterName, RandomStringUtils.randomAlphabetic(6));
} else if (condition.equalsIgnoreCase("incorrect")) {
bodyParameters.put(parameterName, correctParameter.get(parameterName).replaceAll(
correctParameter.get(parameterName).substring(2, 7), RandomStringUtils.randomAlphabetic(5)));
} else if (condition.equalsIgnoreCase("null")) {
bodyParameters.put(parameterName, null);
} else if (condition.equalsIgnoreCase("expired") || condition.equalsIgnoreCase("expire")) {
bodyParameters.put(parameterName, expiredParameter.get(parameterName));
}
}
正如评论中提到的 tgdavies,您可以将地图传递给方法:
public void redefineParameters(HashMap<String, String> map, String condition, String parameterName) {
if (condition.equalsIgnoreCase("invalid")) {
map.put(parameterName, RandomStringUtils.randomAlphabetic(6));
} else if (condition.equalsIgnoreCase("incorrect")) {
map.put(parameterName, correctParameter.get(parameterName).replaceAll(
correctParameter.get(parameterName).substring(2, 7), RandomStringUtils.randomAlphabetic(5)));
} else if (condition.equalsIgnoreCase("null")) {
map.put(parameterName, null);
} else if (condition.equalsIgnoreCase("expired") || condition.equalsIgnoreCase("expire")) {
map.put(parameterName, expiredParameter.get(parameterName));
}
}
或者,将通用方法设为私有并命名包装器:
public void redefineHeaderParameters(String condition, String parameterName) {
redefineParameters(headerParameters, condition, parameterName);
}
public void redefineQueryParameters(String condition, String parameterName) {
redefineParameters(queryParameters, condition, parameterName);
}
public void redefineBodyParameters(String condition, String parameterName) {
redefineParameters(bodyParameters, condition, parameterName);
}
private void redefineParameters(Map<String, String> map, String condition, String parameterName) {
if (condition.equalsIgnoreCase("invalid")) {
map.put(parameterName, RandomStringUtils.randomAlphabetic(6));
} else if (condition.equalsIgnoreCase("incorrect")) {
map.put(parameterName, correctParameter.get(parameterName).replaceAll(
correctParameter.get(parameterName).substring(2, 7), RandomStringUtils.randomAlphabetic(5)));
} else if (condition.equalsIgnoreCase("null")) {
map.put(parameterName, null);
} else if (condition.equalsIgnoreCase("expired") || condition.equalsIgnoreCase("expire")) {
map.put(parameterName, expiredParameter.get(parameterName));
}
}
另一种选择,如果映射不在调用者的范围内,则传递另一个参数以指示它是哪种类型的参数:
public enum ParameterType { HEADER, QUERY, BODY };
public void redefineParameters(ParameterType parameterType, String condition, String parameterName) {
Map<String, String> map;
switch (parameterType) {
case HEADER:
map = headerParameters;
break;
case QUERY:
map = queryParameters;
break;
case BODY:
map = bodyParameters;
break;
}
if (condition.equalsIgnoreCase("invalid")) {
map.put(parameterName, RandomStringUtils.randomAlphabetic(6));
} else if (condition.equalsIgnoreCase("incorrect")) {
map.put(parameterName, correctParameter.get(parameterName).replaceAll(
correctParameter.get(parameterName).substring(2, 7), RandomStringUtils.randomAlphabetic(5)));
} else if (condition.equalsIgnoreCase("null")) {
map.put(parameterName, null);
} else if (condition.equalsIgnoreCase("expired") || condition.equalsIgnoreCase("expire")) {
map.put(parameterName, expiredParameter.get(parameterName));
}
}