随笔 - 4  文章 - 13  trackbacks - 0
<2024年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

留言簿(1)

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

我的评论

@lvq810
4楼给出的解释应该是正确的。下面是CSDN的网友MT502给出的解答:
MAP在执行put()的时候先调用myPolSchema的hashCode()方法看当前有没有一样的hashCode存在,如果没有就直接put,有的话就调用myPolSchema的equals()方法看是否相等。
因为你没有实现hashCode(),所以用默认的hashCode(),所以当产生相同的hashCode的时候(在我机器上是运行到2058时),因为检查到相同的hashcode,所以调用你自己的equals(),因为GrpContNo是null,所以这时候抛NullPointerException 。
你机器上显然是在1500的时候产生了相同了hashcode()。
如果实现了hashCode(),第一次就抛NullPointerException :

Java codepublic int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ ((GrpContNo == null) ? 0 : GrpContNo.hashCode());
result = prime * result
+ ((GrpPolNo == null) ? 0 : GrpPolNo.hashCode());
return result;
}


我现在在想,如何去重写hashCode方法才能保证生成的hashCode值不同呢……

或者去修改我的equals算法,在调用之前先去判断一下other.getGrpContNo==null(这两种方法怎么实现起来才算是比较合理的算法呢?

@paul xu
方法很简单,在被格式化的数据上加一个很小很小的正数即可
double dTest=82.545d;
DecimalFormat format=new DecimalFormat("0.00");
System.out.println(format.format(dTest+0.00000001));

输出结果就是传统意义上的四舍五入了
我还需要向楼主请教这些问题:
以前做C#时,我做类似楼主说的“按需取数”是这样的:从数据库中取出数据集所需要的数据记录数,然后显示给dataTable,
比如数据库中现在有1000条记录,设置分页10/页,现在我需要取第2页的数据,那么用
select * from tablename where rownum>10 and rownum<=2*10
查询出来记录(以oracle为例),然后将它保存至ArrayList中,将该ArrayList返回给DataModal以供DataTable绑定使用。

查询出来的记录转换为ArrayList的过程是否应在fetchData中进行?
在楼主的上一篇博文的TestBean中的getDataModel方法里重写的fetchData中的两个参数(int startRow, int pageSize)在什么地方传进去?我如何告知datascroller数据集中共有多少条记录?在查询的时候我如何知道当前是第几页?
还烦请楼主多我指教!
请教楼主:
<rich:datascroller for="carList" id="dc1"
style="width:483px" page="#{user.scrollerPage}"/>
分页控件中的page绑定的代码可以贴出来么?
小弟刚接触java不久,最近一个项目要使用到JSF,尤其dataTable这个,有些问题不太明白,希望能请教楼主!