无法通过键</bigdecimal,>获取Map <bigdecimal,string =“”>的值

时间:2013-05-17 20:52:40

标签: java jsf hashmap bigdecimal

我有一张类似

的地图
Map<BigDecimal, String> functions = new HashMap<BigDecimal, String>();

当我尝试从JSF页面访问map的值时,它什么也没显示。我检查了地图的大小,它返回一个数字,似乎不是空的。这是JSF页面代码

<p:dataTable value="#{bean.permissions}" var="permission">  
    <p:column>
        #{bean.functions[permission.functionId]}   
    </p:column>                     
</p:dataTable>

这是如何引起的?如何解决?

2 个答案:

答案 0 :(得分:4)

如果两个BigDecimals的刻度不相等,即使它们代表相同的数值,它们也不相等。这就是为什么他们可能无法制作好的Map键。

对于两个表示具有不同比例的相同值的BigDecimal,compareTo()将返回0,但equals()将返回false。

答案 1 :(得分:-6)

BigDecimalHashMap的错误密钥,它使用BigDecimals内存地址作为密钥,因此即使您有2个相等的值,它也是不同的密钥,请尝试使用{{1}将BigDecimal作为键