3 回答

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超6個(gè)贊
Set testIds=map.keySet();
這一行改為 Set testIds=map.keySet();
原因就是key不是Integer,沒(méi)別的原因.
你這個(gè)錯(cuò)誤相當(dāng)于
public static void main(String[] args) { Map map = new HashMap(); map.put("a","a"); Map<Integer,String> m = map; Set<Integer> set = m.keySet(); for (Integer integer : set) { System.out.println(integer); } }

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊
System.out.println(iter.next().getClass());
Integer testId=iter.next();
第二個(gè)方法迭代了兩次,這個(gè)可能會(huì)超過(guò)迭代器的邊界。
從代碼上看就這里有問(wèn)題。

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊
1.上面的類(lèi)型轉(zhuǎn)換錯(cuò)誤,可能是你這個(gè) Test test=testMapper.selectByPrimaryKey(testId);查詢(xún)數(shù)據(jù)庫(kù)出來(lái)的字段和bean類(lèi)中的類(lèi)型不匹配導(dǎo)致的
2.還有你有一個(gè)越界行為,循環(huán)一次調(diào)用一次iter.next()這個(gè),代表取的是上一次取的接下來(lái)一個(gè)值,但是iter.hasNext()還處在上一次值的位置(這就像是我右腳只邁了一步,但是我左腳邁了兩步,兩腳不同步,一腳已經(jīng)到達(dá)終點(diǎn),另一腳還沒(méi)跟上來(lái)的情況)
添加回答
舉報(bào)