`
danwind
  • 浏览: 225556 次
  • 性别: Icon_minigender_1
  • 来自: 广东
社区版块
存档分类
最新评论

java问题收集

 
阅读更多

1.double类型

在操作double类型时,如果double大于10位,则double会自动使用科学计数法进行操作。

在进行double计算时,会出现很多位小数点。这是由于2进制和16进制转换的时候的偏度差造成的。

针对以上问题,推荐使用java.math.BigDecimal。

BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.add(b2).doubleValue();

在实体类中更推荐使用java.math.BigDecimal映射到数据库有小数的类型字段。

 

2.在对一个集合进行迭代遍历并删除一些符合条件的键值对的时候,容易出现java.util.ConcurrentModificationException 这个异常

while(parameterValues.size() != 0) {
    Set<Object> pv = new HashSet<Object>();
    Iterator<Object> it = parameterValues.iterator();
    while(it.hasNext()) {
        Object parameter = it.next();
        it.remove();                //方法1
        doEvent(parameter);	
        pv.add(parameter);
        parameterValues.remove(parameter);//方法2
}
parameterValues.removeAll(pv);//方法3

 

推荐使用方法1,3,但多线程下仍会出现此问题.待解决

方法2不推荐使用 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics