java如何重构此代码以仅执行一次方法logViolation(),并在单个字符串中获取字符串变量(speedType)的所有值
如何重构下面的代码,只执行一次方法logViolation()
,并在单个字符串中获取字符串变量speedType
的所有值
private void checkForViolation(
final LineFeature feature,
final DirectionalVehicleTypeRestrictionCollection srSet,
final Map<String, Collection<String>> setOfVehiclesWithMoreThanOneSpeedRestrictionType
) {
for (final Entry<String, Collection<String>> entry : setOfVehiclesWithMoreThanOneSpeedRestrictionType.entrySet()) {
final String speedType = entry.getKey();
final Collection<String> value = entry.getValue();
if (CollectionUtils.isNotEmpty(value)) {
final Set<String> set = new TreeSet<>();
set.addAll(value);
logViolation(feature, speedType, srSet.getDirection().getTypeShortName(), set);
}
}
}
private void logViolation(
final LineFeature feature, final String speedRestrictionType,
final String direction, final Set<String> vehicleTypesSet
) {
final ViolationVariableSpeedInfo viva = new ViolationVariableSpeedInfo(
ViolationVariableKey.SPEED_INFO.getKey(),
speedRestrictionType, vehicleTypesSet, direction
);
getRuleContext().logViolation(feature, viva);
}
# 1 楼答案
如果需要将输入映射
setOfVehiclesWithMoreThanOneSpeedRestrictionType
中的所有键合并到一个字符串中,并且此映射中的所有值都应合并到一个TreeSet
中,然后进行记录,则可以实现如下简单操作: