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