#java#Map取值的时候bigdecimal类型的怎么转换为String类型的
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#java#Map取值的时候bigdecimal类型的怎么转换为String类型的相关的知识,希望对你有一定的参考价值。
大家好,今天我提取一个ID的时候,说bigdecimal类型不能转换为String类型,然后我就用了cmap.get("ID").toString(),但是还是说bigdecimal类型不能转换为String类型,然后我就强转(String)cmap.get("ID"),还是报相同的错误,但是最后我用String.valueOf(cmap.get("ID"),它就不报错了,哪位大神能给我排难解惑下么?这是什么原因呢?
for(Map<String,String> cmap :result)
cmap.put("serial", String.valueOf(cmap.get("ID"))) ;
cmap.put("name", cmap.get("TYPE")) ;
b 是 Bigdecimal的一个实例。 那么 b.floatValue() + "", 这个就是String类型。
sorry,我没看完整你的问题,map中的get()方法返回map中存放的value,根据你用的String.valueOf(cmap.get("ID")方法,你查文档,这个方法返回值就是String类型。而你直接进行强转,就相当于有一个动物这个类转换成植物类。这两个类毫不相干,是无法进行强转的,而你使用这个方法cmap.get("ID").toString(),当value是一个基本数据类型的时候,是没有toString()方法的。 你去查文档,String.valueOf( int i ),String.valueOf( float f) ,String.valueOf( Object o).....所以valueOf方法能成功 参考技术A BigDecimal totalMoney =project.getTotalMoney();
BigDecimal totalPayamount = paymentrel.getPayamount();
totalMoney.toString();
totalPayamount.toString();
或者
String.valueOf(totalMoney);
String.valueOf(totalPayamount); 参考技术B 是long型的,((Long)cmp.get("id")).tostring(); 大概这样,没验证
freeMark的Map取值问题
https://www.jianshu.com/p/289e15a49f56
FreeMark除了基本数据类型之外,还有类似于java对象的类型叫容器,主要分为以下三种:
- 哈希表
- 序列
- 集
哈希表从java角度来说,可以是普通的对象,也可以是HashMap
。当是普通的对象的时候,直接Object.value
这种形式调用即可,但当是java里面的HashMap
的时候,尤其数据量比较多的时候,就必须按照键值对的形式来获取数据:
myMap[myKey]
但是,这里有一个比较隐含的条件就是:myKey
必须是字符串,否则freeMark就会自动的将非字符串的键转换为字符串,然后再获取myKey对应的value,
文档里是这么描述原因的:
FreeMarker 模板语言( FTL)的“哈希表”类型和 Java 的 Map 是不同的。 FTL 的哈希表也是一个关联数组,但是它仅仅使用字符串的键。这是因为它是为子变量而引的(比如user.password 中的 password,它和 user["password"]是相同的),而变量名是字符串。
这里隐式的自动转换会带来一个严重的问题,比如java中map是这么定义的:
Map<Long, Object> myMap = new HashMap<~>();
此时,在freeMark中写myMap(myLong)
就会报错,因为隐式转换为字符形式的时候,会自动加分隔符 ,
,比如123345
就会被转换为"123,45"
,从而导致错误的myKey的产生,获取不到value而报错。
解决办法,调用c方法转换:
myMap(myLong?c)
通常来说,也是不推荐自动隐式转换的。比如,如果你在Map中使用Integer
类型的键,那么你就必须书写$myMap.get(123?int)
这样子。
作者:杨比轩
链接:https://www.jianshu.com/p/289e15a49f56
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
以上是关于#java#Map取值的时候bigdecimal类型的怎么转换为String类型的的主要内容,如果未能解决你的问题,请参考以下文章
利用stream对list集合中的bigdecimal进行分组求和,均值,最大值,最小值