java - spring中如何定义Map值的序列

标签 java spring spring-mvc

我在 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>

我需要以这样的方式维护 Map 值的序列,即首先评估 CFN 值,如果不匹配,则评估 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 。 但如果我打印 map ,就会得到错误的序列

Set<MedtronicB2BRuleType> ruleTypeSet = ruleEvaluationService.keySet();

结果:[PH、CFN、MPG]

为什么我没有得到像 CFN、PH、MPG 这样的序列。在 spring 中定义序列的正确方法是什么。

请帮忙。

最佳答案

您可以使用 LinkedHashMap 代替 HashMap,这样您的订单将被保留。

<util:map id="ruleEvaluationService" map-class="java.util.LinkedHashMap ">

关于java - spring中如何定义Map值的序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33295326/

相关文章:

hibernate - tomcat启动报错: for my spring web-app

java - 如何检查查询是否为空?

JavaFX - 使用来自不同类的对象参数启动应用程序

java - jetty 8多部分/表单数据请求

java - 升级到cxf-rt-frontend-jaxrs-3.1.13后,WadlGenerator无法转换为javax.ws.rs.container.ContainerRequestFilter

java - 未找到 ThrowingSupplier 类

java - Java 中的一些方法或现有设计模式可防止因参数检查而出现大量 if/else 条件

java - Spring MVC Controller 无法直接与 Spring Web Flow 连接?

java - 带有谷歌身份验证的 CircularRedirectException

jquery - 使用 Spring 和 Ajax 从 Post 方法接收 Rest Controller 中的参数