我有一张类似
的地图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>
这是如何引起的?如何解决?
答案 0 :(得分:4)
如果两个BigDecimals的刻度不相等,即使它们代表相同的数值,它们也不相等。这就是为什么他们可能无法制作好的Map键。
对于两个表示具有不同比例的相同值的BigDecimal,compareTo()将返回0,但equals()将返回false。
答案 1 :(得分:-6)
BigDecimal
是HashMap
的错误密钥,它使用BigDecimals内存地址作为密钥,因此即使您有2个相等的值,它也是不同的密钥,请尝试使用{{1}将BigDecimal作为键