re: 我無法解釋的問題,請您一并來解釋 foxinsky 2009-01-14 13:43
@lvq810
4樓給出的解釋應(yīng)該是正確的。下面是CSDN的網(wǎng)友MT502給出的解答:
MAP在執(zhí)行put()的時候先調(diào)用myPolSchema的hashCode()方法看當(dāng)前有沒有一樣的hashCode存在,如果沒有就直接put,有的話就調(diào)用myPolSchema的equals()方法看是否相等。
因為你沒有實現(xiàn)hashCode(),所以用默認的hashCode(),所以當(dāng)產(chǎn)生相同的hashCode的時候(在我機器上是運行到2058時),因為檢查到相同的hashcode,所以調(diào)用你自己的equals(),因為GrpContNo是null,所以這時候拋NullPointerException 。
你機器上顯然是在1500的時候產(chǎn)生了相同了hashcode()。
如果實現(xiàn)了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;
}
我現(xiàn)在在想,如何去重寫hashCode方法才能保證生成的hashCode值不同呢……
或者去修改我的equals算法,在調(diào)用之前先去判斷一下other.getGrpContNo==null(這兩種方法怎么實現(xiàn)起來才算是比較合理的算法呢?
@paul xu
方法很簡單,在被格式化的數(shù)據(jù)上加一個很小很小的正數(shù)即可
double dTest=82.545d;
DecimalFormat format=new DecimalFormat("0.00");
System.out.println(format.format(dTest+0.00000001));
輸出結(jié)果就是傳統(tǒng)意義上的四舍五入了
我還需要向樓主請教這些問題:
以前做C#時,我做類似樓主說的“按需取數(shù)”是這樣的:從數(shù)據(jù)庫中取出數(shù)據(jù)集所需要的數(shù)據(jù)記錄數(shù),然后顯示給dataTable,
比如數(shù)據(jù)庫中現(xiàn)在有1000條記錄,設(shè)置分頁10/頁,現(xiàn)在我需要取第2頁的數(shù)據(jù),那么用
select * from tablename where rownum>10 and rownum<=2*10
查詢出來記錄(以oracle為例),然后將它保存至ArrayList中,將該ArrayList返回給DataModal以供DataTable綁定使用。
查詢出來的記錄轉(zhuǎn)換為ArrayList的過程是否應(yīng)在fetchData中進行?
在樓主的上一篇博文的TestBean中的getDataModel方法里重寫的fetchData中的兩個參數(shù)(int startRow, int pageSize)在什么地方傳進去?我如何告知datascroller數(shù)據(jù)集中共有多少條記錄?在查詢的時候我如何知道當(dāng)前是第幾頁?
還煩請樓主多我指教!
請教樓主:
<rich:datascroller for="carList" id="dc1"
style="width:483px" page="#{user.scrollerPage}"/>
分頁控件中的page綁定的代碼可以貼出來么?
小弟剛接觸java不久,最近一個項目要使用到JSF,尤其dataTable這個,有些問題不太明白,希望能請教樓主!