1

我有一张像

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>

这是如何引起的,我该如何解决?

4

2 回答 2

5

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

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

于 2015-06-28T00:49:02.197 回答
-6

BigDecimal是一个坏键HashMap,它使用 BigDecimals 内存地址作为键,所以即使你有 2 个相等的值,它是一个不同的键,尝试使用toString()BigDecimal 作为键

于 2013-05-17T21:05:00.943 回答