因為數組的地址是不會發生變化的,每次在數組中的內容改變后,將數組添加到ArrayList中時,會導致ArrayList中的每個內容都是最后添加進去的數據。案例如下所示:
Object []objs = new Object[count]; while(rs.next()){ for(int i = 0; i < count; i++){ objs[i] = rs.getString(i+1); } al.add(objs); }
假設rs中有20個數據,那么al中將會擁有20個rs最后的數據,解決的辦法是:
while(rs.next()){ Object []objs = new Object[count]; for(int i = 0; i < count; i++){ objs[i] = rs.getString(i+1); } al.add(objs); }
這樣每次重新創建一個數組,它們的地址都是不一樣的,所以添加進去的引用也是不一樣的。