我在Spring XML文件中定义了一个地图值。
* - spring.xml文件
<util:map id="ruleEvaluationService" map-class="java.util.HashMap">
<entry key="CFN" value-ref="cfnRuleEvaluationService" />
<entry key="PH" value-ref="phRuleEvaluationService" />
<entry key="MPG" value-ref="mpgRuleEvaluationService" />
</util:map>
<bean id="ruleEngine" class="com.medtronic.b2b.core.cvg.service.impl.RuleEngineImpl">
<property name="ruleEvaluationService" ref="ruleEvaluationService" />
</bean>
我需要以第一个CFN值评估的方式维护一系列Map值,如果不匹配那么PH和更多的MPG值。我的想法是,如果我将以正确的顺序给出Map中的条目,我将在我的java文件中得到相同的序列。但同样的事情并没有发生。
RuleEngineImpl.java
@Resource(name = "ruleEvaluationService")
private Map<MedtronicB2BRuleType, RuleEvaluationService> ruleEvaluationService;
// some code
public void setRuleEvaluationService(final Map<MedtronicB2BRuleType, RuleEvaluationService> ruleEvaluationService) {
final Map<MedtronicB2BRuleType, RuleEvaluationService> map = new LinkedHashMap<MedtronicB2BRuleType, RuleEvaluationService>();
for (final MedtronicB2BRuleType key : ruleEvaluationService.keySet()) {
map.put(key, ruleEvaluationService.get(key));
}
this.ruleEvaluationService = Collections.unmodifiableMap(map);
}
}
这里我在setter方法中写一个登录,以正确的顺序填充地图。 但是,如果我正在打印Map,那么序列错误
Set<MedtronicB2BRuleType> ruleTypeSet = ruleEvaluationService.keySet();
结果: [PH,CFN,MPG]
为什么我没有得到像CFN,PH,MPG这样的序列。在春天定义序列的正确方法是什么。
请帮忙。
答案 0 :(得分:2)
您可以使用LinkedHashMap而不是HashMap,在这种情况下,您的订单将被维护。
<util:map id="ruleEvaluationService" map-class="java.util.LinkedHashMap ">