java - 无法通过键获取 Map<BigDecimal, String> 的值

标签 java jsf hashmap bigdecimal

我有一张像这样的 map

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

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

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

这是怎么造成的,如何解决?

最佳答案

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

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

关于java - 无法通过键获取 Map<BigDecimal, String> 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16617718/

相关文章:

java - system.out.println 输出在 Oracle Java 类中的什么位置?

java - 这是如何运作的? Java 日期、日历和 Richface 问题

jsf - @Inject 通过 URL 将参数传递给 CDI @Named bean

jsf - 使用 View 作用域 bean 进行数据交换

c++ - 无法打印 Iterator 中存储的内容

java - 我无法创建 Eclipse Java 类

java - org.springframework.beans.factory.BeanCreationException : Error creating bean with name 'jdbcTemplate' defined in class path resource

java - 天蓝色函数java CosmosDBTrigger输入和@SignalROutput输出,错误:Cannot create Collection Information

java - 从 TreeMap 中获取 HashMap

java - Struts 2 如何显示 map 复选框列表